]> git.karo-electronics.de Git - mv-sheeva.git/commit - drivers/media/video/v4l2-device.c
[media] v4l2-device: fix 'use-after-freed' oops
authorHans Verkuil <hverkuil@xs4all.nl>
Tue, 11 Jan 2011 20:48:21 +0000 (17:48 -0300)
committerMauro Carvalho Chehab <mchehab@redhat.com>
Wed, 19 Jan 2011 13:52:14 +0000 (11:52 -0200)
commit672dcd54774ea1b03da8f2baa1cdbf827927fc85
tree051843ebf49c9437e740b7f271554ffdebf8e52f
parent46b633779b299c7fb3d78f153a5034055f99cd45
[media] v4l2-device: fix 'use-after-freed' oops

Fix a bug in v4l2_device_unregister where the sd pointer can be dereferenced
after it was freed.

Normally the i2c adapter is removed before this function is called. Removing
the adapter will also unregister all subdevs on that adapter, so generally
v4l2_device_unregister has nothing to do. However, in the case of a platform
i2c bus that bus is generally not freed.

In that case, after freeing the i2c subdevice the code will fall into the
second block when it tests if the subdev is a SPI device. But by that time
the subdev is already freed and the kernel oopses.

The fix is trivial: continue with the loop after freeing the i2c or spi
subdevice.

Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
Reported-by: Daniel Drake <dsd@laptop.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
drivers/media/video/v4l2-device.c