|
@@ -3248,6 +3248,8 @@ static int udc_pci_probe(
|
|
|
|
|
|
/* pci setup */
|
|
|
if (pci_enable_device(pdev) < 0) {
|
|
|
+ kfree(dev);
|
|
|
+ dev = 0;
|
|
|
retval = -ENODEV;
|
|
|
goto finished;
|
|
|
}
|
|
@@ -3259,6 +3261,8 @@ static int udc_pci_probe(
|
|
|
|
|
|
if (!request_mem_region(resource, len, name)) {
|
|
|
dev_dbg(&pdev->dev, "pci device used already\n");
|
|
|
+ kfree(dev);
|
|
|
+ dev = 0;
|
|
|
retval = -EBUSY;
|
|
|
goto finished;
|
|
|
}
|
|
@@ -3267,18 +3271,24 @@ static int udc_pci_probe(
|
|
|
dev->virt_addr = ioremap_nocache(resource, len);
|
|
|
if (dev->virt_addr == NULL) {
|
|
|
dev_dbg(&pdev->dev, "start address cannot be mapped\n");
|
|
|
+ kfree(dev);
|
|
|
+ dev = 0;
|
|
|
retval = -EFAULT;
|
|
|
goto finished;
|
|
|
}
|
|
|
|
|
|
if (!pdev->irq) {
|
|
|
dev_err(&dev->pdev->dev, "irq not set\n");
|
|
|
+ kfree(dev);
|
|
|
+ dev = 0;
|
|
|
retval = -ENODEV;
|
|
|
goto finished;
|
|
|
}
|
|
|
|
|
|
if (request_irq(pdev->irq, udc_irq, IRQF_SHARED, name, dev) != 0) {
|
|
|
dev_dbg(&dev->pdev->dev, "request_irq(%d) fail\n", pdev->irq);
|
|
|
+ kfree(dev);
|
|
|
+ dev = 0;
|
|
|
retval = -EBUSY;
|
|
|
goto finished;
|
|
|
}
|