mfd: 88pm800: Fix I2C device resource leak if probe fails
authorKrzysztof Kozlowski <k.kozlowski@samsung.com>
Wed, 12 Feb 2014 10:10:56 +0000 (11:10 +0100)
committerLee Jones <lee.jones@linaro.org>
Wed, 19 Mar 2014 08:58:15 +0000 (08:58 +0000)
During probe the driver allocates two dummy I2C devices for subchips in
function pm800_pages_init(). Additionally this function allocates
regmaps for these subchips. If any of these steps fail then these dummy
I2C devices are not freed and resources leak.

On pm800_pages_init() fail the driver must call pm800_pages_exit() to
unregister dummy I2C devices.

Cc: stable@vger.kernel.org
Signed-off-by: Krzysztof Kozlowski <k.kozlowski@samsung.com>
Signed-off-by: Lee Jones <lee.jones@linaro.org>
drivers/mfd/88pm800.c

index 7dca1e640970a0dfb7f28ad8909c1f3e4d7d26e4..841717a2842cb05d49429ed36ad0c51608f15148 100644 (file)
@@ -571,7 +571,7 @@ static int pm800_probe(struct i2c_client *client,
        ret = pm800_pages_init(chip);
        if (ret) {
                dev_err(&client->dev, "pm800_pages_init failed!\n");
-               goto err_page_init;
+               goto err_device_init;
        }
 
        ret = device_800_init(chip, pdata);
@@ -587,7 +587,6 @@ static int pm800_probe(struct i2c_client *client,
 
 err_device_init:
        pm800_pages_exit(chip);
-err_page_init:
 err_subchip_alloc:
        pm80x_deinit();
 out_init: