Commit e5d85b9a authored by Jesper Juhl's avatar Jesper Juhl Committed by Mauro Carvalho Chehab

[media] rc: Fix double free in gpio_ir_recv_probe()

At the 'err_request_irq' label, rc_unregister_device(rcdev) frees its
argument. So when we fall through to the 'err_gpio_request' label
further down and call rc_free_device(rcdev) then that's a double free.
Fix that by moving 'rcdev = NULL' from after the call to
rc_free_device() to after rc_unregister_device(). That fixes the
problem since rc_free_device() just does nothing if passed NULL and
there's no further use of 'rcdev' after the call to rc_free_device()
so it's not needed there.
Signed-off-by: default avatarJesper Juhl <jj@chaosbits.net>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@redhat.com>
parent 1c12bf8d
...@@ -129,12 +129,12 @@ static int __devinit gpio_ir_recv_probe(struct platform_device *pdev) ...@@ -129,12 +129,12 @@ static int __devinit gpio_ir_recv_probe(struct platform_device *pdev)
err_request_irq: err_request_irq:
platform_set_drvdata(pdev, NULL); platform_set_drvdata(pdev, NULL);
rc_unregister_device(rcdev); rc_unregister_device(rcdev);
rcdev = NULL;
err_register_rc_device: err_register_rc_device:
err_gpio_direction_input: err_gpio_direction_input:
gpio_free(pdata->gpio_nr); gpio_free(pdata->gpio_nr);
err_gpio_request: err_gpio_request:
rc_free_device(rcdev); rc_free_device(rcdev);
rcdev = NULL;
err_allocate_device: err_allocate_device:
kfree(gpio_dev); kfree(gpio_dev);
return rc; return rc;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment