Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit afd6eae1 authored by Sergei Shtylyov's avatar Sergei Shtylyov Committed by David S. Miller
Browse files

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: default avatarSergei Shtylyov <sergei.shtylyov@cogentembedded.com>
Acked-by: default avatarSteffen Klassert <klassert@mathematik.tu-chemnitz.de>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 3f8b9637
Loading
Loading
Loading
Loading
+12 −13
Original line number Diff line number Diff line
@@ -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;
}