mfd: Fix pcap_add_subdev error path
authorAxel Lin <axel.lin@gmail.com>
Tue, 24 Aug 2010 05:45:49 +0000 (13:45 +0800)
committerSamuel Ortiz <sameo@linux.intel.com>
Thu, 28 Oct 2010 22:28:58 +0000 (00:28 +0200)
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>
Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
drivers/mfd/ezx-pcap.c

index 134c69aa47909142c20a292e61c56ed65267eaf0..d283d77937b9a8fed636100800c418e2f61c6f22 100644 (file)
@@ -384,12 +384,20 @@ static int __devinit pcap_add_subdev(struct pcap_chip *pcap,
                                                struct pcap_subdev *subdev)
 {
        struct platform_device *pdev;
+       int ret;
 
        pdev = platform_device_alloc(subdev->name, subdev->id);
+       if (!pdev)
+               return -ENOMEM;
+
        pdev->dev.parent = &pcap->spi->dev;
        pdev->dev.platform_data = subdev->platform_data;
 
-       return platform_device_add(pdev);
+       ret = platform_device_add(pdev);
+       if (ret)
+               platform_device_put(pdev);
+
+       return ret;
 }
 
 static int __devexit ezx_pcap_remove(struct spi_device *spi)