From: Christophe JAILLET Date: Wed, 14 Mar 2018 21:47:55 +0000 (+0100) Subject: mfd: pcf50633: Fix some memory leaks in the error handling path of 'pcf50633_probe()' X-Git-Tag: v4.18-rc1~61^2~35 X-Git-Url: https://asedeno.scripts.mit.edu/gitweb/?a=commitdiff_plain;h=52a3a374af06121d6f704d1ab4fe4eeb8a1678a1;p=linux.git 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 --- 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]);