Skip to content

Commit

Permalink
3c59x: consolidate error cleanup in vortex_init_one()
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Sergei Shtylyov authored and David S. Miller committed Jun 12, 2013
1 parent 3f8b963 commit afd6eae
Showing 1 changed file with 12 additions and 13 deletions.
25 changes: 12 additions & 13 deletions drivers/net/ethernet/3com/3c59x.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand All @@ -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;
}
Expand Down

0 comments on commit afd6eae

Please sign in to comment.