iio: cm36651: Fix i2c client leak and possible NULL pointer dereference
authorKrzysztof Kozlowski <k.kozlowski@samsung.com>
Tue, 18 Mar 2014 08:13:00 +0000 (08:13 +0000)
committerJonathan Cameron <jic23@kernel.org>
Sat, 22 Mar 2014 12:22:49 +0000 (12:22 +0000)
commitd0a588a57c2b0748df8307a0865a1bbbf1624c53
tree38af1f01d38a1b036aef4e9060aea61af1c84336
parent2076a20fc1a06f7b0333c62a2bb4eeeac7ed1bcb
iio: cm36651: Fix i2c client leak and possible NULL pointer dereference

During probe the driver allocates dummy I2C devices (i2c_new_dummy())
but they aren't unregistered during driver remove or probe failure.

Additionally driver does not check the return value of i2c_new_dummy().
In case of error (i2c_new_device(): memory allocation failure or I2C
address cannot be used) this function returns NULL which is later
dereferenced by i2c_smbus_{read,write}_data() functions.

Fix issues by properly checking for i2c_new_dummy() return value and
unregistering I2C devices on driver remove or probe failure.

Signed-off-by: Krzysztof Kozlowski <k.kozlowski@samsung.com>
Acked-by: Beomho Seo <beomho.seo@samsung.com>
Cc: stable@vger.kernel.org
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
drivers/iio/light/cm36651.c