From 52a3a374af06121d6f704d1ab4fe4eeb8a1678a1 Mon Sep 17 00:00:00 2001 From: Christophe JAILLET Date: Wed, 14 Mar 2018 22:47:55 +0100 Subject: [PATCH] mfd: pcf50633: Fix some memory leaks in the error handling path of 'pcf50633_probe()' If a 'platform_device_alloc()' call fails, we still need to release the resources that have already been allocated before returning. Signed-off-by: Christophe JAILLET Signed-off-by: Lee Jones --- drivers/mfd/pcf50633-core.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/drivers/mfd/pcf50633-core.c b/drivers/mfd/pcf50633-core.c index f952dff6765f..0d2a88d53eed 100644 --- a/drivers/mfd/pcf50633-core.c +++ b/drivers/mfd/pcf50633-core.c @@ -242,8 +242,10 @@ static int pcf50633_probe(struct i2c_client *client, for (i = 0; i < PCF50633_NUM_REGULATORS; i++) { pdev = platform_device_alloc("pcf50633-regulator", i); - if (!pdev) - return -ENOMEM; + if (!pdev) { + ret = -ENOMEM; + goto err2; + } pdev->dev.parent = pcf->dev; ret = platform_device_add_data(pdev, &pdata->reg_init_data[i], @@ -269,6 +271,7 @@ static int pcf50633_probe(struct i2c_client *client, err: platform_device_put(pdev); +err2: for (j = 0; j < i; j++) platform_device_put(pcf->regulator_pdev[j]); -- 2.11.0