Patchwork 3c59x: handle pci_iomap() errors

login
register
mail settings
Submitter Kulikov Vasiliy
Date July 21, 2010, noon
Message ID <1279713638-31567-1-git-send-email-segooon@gmail.com>
Download mbox | patch
Permalink /patch/59435/
State Accepted
Delegated to: David Miller
Headers show

Comments

Kulikov Vasiliy - July 21, 2010, noon
pci_iomap() can fail, handle this case and return -ENOMEM from probe
function.

Signed-off-by: Kulikov Vasiliy <segooon@gmail.com>
---
 drivers/net/3c59x.c |    5 +++++
 1 files changed, 5 insertions(+), 0 deletions(-)
David Miller - July 22, 2010, 9:11 p.m.
From: Kulikov Vasiliy <segooon@gmail.com>
Date: Wed, 21 Jul 2010 16:00:36 +0400

> pci_iomap() can fail, handle this case and return -ENOMEM from probe
> function.
> 
> Signed-off-by: Kulikov Vasiliy <segooon@gmail.com>

Applied.

We seem to leak the iomaps if vortex_probe1() fails, feel free to fix
that too :-)
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Patch

diff --git a/drivers/net/3c59x.c b/drivers/net/3c59x.c
index 069a03f..9b137e1 100644
--- a/drivers/net/3c59x.c
+++ b/drivers/net/3c59x.c
@@ -1020,6 +1020,11 @@  static int __devinit vortex_init_one(struct pci_dev *pdev,
 	ioaddr = pci_iomap(pdev, pci_bar, 0);
 	if (!ioaddr) /* If mapping fails, fall-back to BAR 0... */
 		ioaddr = pci_iomap(pdev, 0, 0);
+	if (!ioaddr) {
+		pci_disable_device(pdev);
+		rc = -ENOMEM;
+		goto out;
+	}
 
 	rc = vortex_probe1(&pdev->dev, ioaddr, pdev->irq,
 			   ent->driver_data, unit);