diff options
author | Jesper Juhl <jj@chaosbits.net> | 2008-11-25 10:57:30 -0300 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@redhat.com> | 2012-12-21 16:27:01 -0200 |
commit | e5d85b9ac3133f67460ea5b2d4e33e0473d6eb4b (patch) | |
tree | 25824286f481b5878e71e345bc2a60eeb0c23300 /drivers/media/rc/gpio-ir-recv.c | |
parent | 1c12bf8de7e1557afeedd55d9bcec6b6a6d7b5d1 (diff) | |
download | op-kernel-dev-e5d85b9ac3133f67460ea5b2d4e33e0473d6eb4b.zip op-kernel-dev-e5d85b9ac3133f67460ea5b2d4e33e0473d6eb4b.tar.gz |
[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: Jesper Juhl <jj@chaosbits.net>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Diffstat (limited to 'drivers/media/rc/gpio-ir-recv.c')
-rw-r--r-- | drivers/media/rc/gpio-ir-recv.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/media/rc/gpio-ir-recv.c b/drivers/media/rc/gpio-ir-recv.c index ba1a1eb..32db5f5 100644 --- a/drivers/media/rc/gpio-ir-recv.c +++ b/drivers/media/rc/gpio-ir-recv.c @@ -129,12 +129,12 @@ static int __devinit gpio_ir_recv_probe(struct platform_device *pdev) err_request_irq: platform_set_drvdata(pdev, NULL); rc_unregister_device(rcdev); + rcdev = NULL; err_register_rc_device: err_gpio_direction_input: gpio_free(pdata->gpio_nr); err_gpio_request: rc_free_device(rcdev); - rcdev = NULL; err_allocate_device: kfree(gpio_dev); return rc; |