mfd: Fix da903x_add_subdevs error path
authorAxel Lin <axel.lin@gmail.com>
Tue, 24 Aug 2010 05:44:05 +0000 (13:44 +0800)
committerSamuel Ortiz <sameo@linux.intel.com>
Thu, 28 Oct 2010 22:28:56 +0000 (00:28 +0200)
This patch fixes da903x_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: Eric Miao <eric.y.miao@gmail.com>
Acked-by: Mike Rapoport <mike@compulab.co.il>
Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
drivers/mfd/da903x.c

index c07aece900fbb93b9ec08b2aa99ee85e144093fe..2fadbaeb1cb138da62a91f57f394599058c70624 100644 (file)
@@ -470,13 +470,19 @@ static int __devinit da903x_add_subdevs(struct da903x_chip *chip,
                subdev = &pdata->subdevs[i];
 
                pdev = platform_device_alloc(subdev->name, subdev->id);
+               if (!pdev) {
+                       ret = -ENOMEM;
+                       goto failed;
+               }
 
                pdev->dev.parent = chip->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;