[PATCH 3/7] mfd: max77686: Fix possible NULL pointer dereference on i2c_new_dummy error

2014-02-11 Thread Krzysztof Kozlowski
During probe the driver allocates dummy I2C device for RTC with
i2c_new_dummy() but it does not check the return value of this call.

In case of error (i2c_new_device(): memory allocation failure or I2C
address cannot be used) this function returns NULL which is later used
by i2c_unregister_device().

If i2c_new_dummy() fails for RTC device, fail also the probe for main
MFD driver.

Signed-off-by: Krzysztof Kozlowski k.kozlow...@samsung.com
Cc: sta...@vger.kernel.org
---
 drivers/mfd/max77686.c |4 
 1 file changed, 4 insertions(+)

diff --git a/drivers/mfd/max77686.c b/drivers/mfd/max77686.c
index f53d5823a3f7..e5fce765accb 100644
--- a/drivers/mfd/max77686.c
+++ b/drivers/mfd/max77686.c
@@ -121,6 +121,10 @@ static int max77686_i2c_probe(struct i2c_client *i2c,
dev_info(max77686-dev, device found\n);
 
max77686-rtc = i2c_new_dummy(i2c-adapter, I2C_ADDR_RTC);
+   if (!max77686-rtc) {
+   dev_err(max77686-dev, Failed to allocate I2C device for 
RTC\n);
+   return -ENODEV;
+   }
i2c_set_clientdata(max77686-rtc, max77686);
 
max77686_irq_init(max77686);
-- 
1.7.9.5

--
To unsubscribe from this list: send the line unsubscribe linux-samsung-soc in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 3/7] mfd: max77686: Fix possible NULL pointer dereference on i2c_new_dummy error

2014-02-11 Thread Lee Jones
On Tue, 11 Feb 2014, Krzysztof Kozlowski wrote:

 During probe the driver allocates dummy I2C device for RTC with
 i2c_new_dummy() but it does not check the return value of this call.
 
 In case of error (i2c_new_device(): memory allocation failure or I2C
 address cannot be used) this function returns NULL which is later used
 by i2c_unregister_device().
 
 If i2c_new_dummy() fails for RTC device, fail also the probe for main
 MFD driver.
 
 Signed-off-by: Krzysztof Kozlowski k.kozlow...@samsung.com
 Cc: sta...@vger.kernel.org
 ---
  drivers/mfd/max77686.c |4 
  1 file changed, 4 insertions(+)
 
 diff --git a/drivers/mfd/max77686.c b/drivers/mfd/max77686.c
 index f53d5823a3f7..e5fce765accb 100644
 --- a/drivers/mfd/max77686.c
 +++ b/drivers/mfd/max77686.c
 @@ -121,6 +121,10 @@ static int max77686_i2c_probe(struct i2c_client *i2c,
   dev_info(max77686-dev, device found\n);
  
   max77686-rtc = i2c_new_dummy(i2c-adapter, I2C_ADDR_RTC);
 + if (!max77686-rtc) {
 + dev_err(max77686-dev, Failed to allocate I2C device for 
 RTC\n);
 + return -ENODEV;
 + }
   i2c_set_clientdata(max77686-rtc, max77686);
  
   max77686_irq_init(max77686);

Applied, thanks.

-- 
Lee Jones
Linaro STMicroelectronics Landing Team Lead
Linaro.org │ Open source software for ARM SoCs
Follow Linaro: Facebook | Twitter | Blog
--
To unsubscribe from this list: send the line unsubscribe linux-samsung-soc in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html