]> bbs.cooldavid.org Git - net-next-2.6.git/blobdiff - drivers/mfd/ezx-pcap.c
ipv6: AF_INET6 link address family
[net-next-2.6.git] / drivers / mfd / ezx-pcap.c
index 134c69aa47909142c20a292e61c56ed65267eaf0..c2b698d69a93862937efa7efb4e1bf3d48c96f32 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)
@@ -457,6 +465,7 @@ static int __devinit ezx_pcap_probe(struct spi_device *spi)
        pcap->irq_base = pdata->irq_base;
        pcap->workqueue = create_singlethread_workqueue("pcapd");
        if (!pcap->workqueue) {
+               ret = -ENOMEM;
                dev_err(&spi->dev, "cant create pcap thread\n");
                goto free_pcap;
        }