From: Axel Lin <axel.lin@gmail.com>
Date: Tue, 24 Aug 2010 05:47:22 +0000 (+0800)
Subject: mfd: Fix tps6586x_add_subdevs error path
X-Git-Url: https://git.stricted.de/?a=commitdiff_plain;h=929980ab1b90b5a5c93db9b9b7d58cc6e93049c8;p=GitHub%2Fexynos8895%2Fandroid_kernel_samsung_universal8895.git

mfd: Fix tps6586x_add_subdevs error path

1. return -ENOMEM if platform_device_alloc() fail.
2. call platform_device_put() if platform_device_add() fail.

Signed-off-by: Axel Lin <axel.lin@gmail.com>
Acked-by: Mike Rapoport <mike@compulab.co.il>
Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
---

diff --git a/drivers/mfd/tps6586x.c b/drivers/mfd/tps6586x.c
index bc6587194de9..2f9336c3710c 100644
--- a/drivers/mfd/tps6586x.c
+++ b/drivers/mfd/tps6586x.c
@@ -273,13 +273,19 @@ static int __devinit tps6586x_add_subdevs(struct tps6586x *tps6586x,
 		subdev = &pdata->subdevs[i];
 
 		pdev = platform_device_alloc(subdev->name, subdev->id);
+		if (!pdev) {
+			ret = -ENOMEM;
+			goto failed;
+		}
 
 		pdev->dev.parent = tps6586x->dev;
 		pdev->dev.platform_data = subdev->platform_data;
 
 		ret = platform_device_add(pdev);
-		if (ret)
+		if (ret) {
+			platform_device_put(pdev);
 			goto failed;
+		}
 	}
 	return 0;