mirror of
https://github.com/torvalds/linux.git
synced 2024-12-22 02:52:56 +00:00
3c59x: consolidate error cleanup in vortex_init_one()
The PCI driver's probe() method duplicates the error cleanup code each time it has to do error exit. Consolidate the error cleanup code in one place and use *goto* to jump to the right places. Signed-off-by: Sergei Shtylyov <sergei.shtylyov@cogentembedded.com> Acked-by: Steffen Klassert <klassert@mathematik.tu-chemnitz.de> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
3f8b96379a
commit
afd6eae13c
@ -1012,10 +1012,8 @@ static int vortex_init_one(struct pci_dev *pdev,
|
||||
goto out;
|
||||
|
||||
rc = pci_request_regions(pdev, DRV_NAME);
|
||||
if (rc < 0) {
|
||||
pci_disable_device(pdev);
|
||||
goto out;
|
||||
}
|
||||
if (rc < 0)
|
||||
goto out_disable;
|
||||
|
||||
unit = vortex_cards_found;
|
||||
|
||||
@ -1032,23 +1030,24 @@ static int vortex_init_one(struct pci_dev *pdev,
|
||||
if (!ioaddr) /* If mapping fails, fall-back to BAR 0... */
|
||||
ioaddr = pci_iomap(pdev, 0, 0);
|
||||
if (!ioaddr) {
|
||||
pci_release_regions(pdev);
|
||||
pci_disable_device(pdev);
|
||||
rc = -ENOMEM;
|
||||
goto out;
|
||||
goto out_release;
|
||||
}
|
||||
|
||||
rc = vortex_probe1(&pdev->dev, ioaddr, pdev->irq,
|
||||
ent->driver_data, unit);
|
||||
if (rc < 0) {
|
||||
pci_iounmap(pdev, ioaddr);
|
||||
pci_release_regions(pdev);
|
||||
pci_disable_device(pdev);
|
||||
goto out;
|
||||
}
|
||||
if (rc < 0)
|
||||
goto out_iounmap;
|
||||
|
||||
vortex_cards_found++;
|
||||
goto out;
|
||||
|
||||
out_iounmap:
|
||||
pci_iounmap(pdev, ioaddr);
|
||||
out_release:
|
||||
pci_release_regions(pdev);
|
||||
out_disable:
|
||||
pci_disable_device(pdev);
|
||||
out:
|
||||
return rc;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user