ChangeSet 1.2181.22.3, 2005/03/22 17:47:57-05:00, [EMAIL PROTECTED]
[PATCH] fix pci_disable_device in 8139too
From: Andres Salomon <[EMAIL PROTECTED]>
http://linux.bkbits.net:8080/linux-2.6/[EMAIL PROTECTED]
added an unconditional pci_disable_device() to __rtl8139_cleanup_dev().
That's fine for rtl8139_remove_one and rtl8139_init_one; however, for
rtl8139_init_board, it ends up being called in the error path. That
is, if
pci_enable_device or pci_request_regions fails, err_out calls
__rtl8139_cleanup_dev, which calls pci_disable_device.
Signed-off-by: Andrew Morton <[EMAIL PROTECTED]>
Signed-off-by: Jeff Garzik <[EMAIL PROTECTED]>
8139too.c | 8 ++++++--
1 files changed, 6 insertions(+), 2 deletions(-)
diff -Nru a/drivers/net/8139too.c b/drivers/net/8139too.c
--- a/drivers/net/8139too.c 2005-03-29 14:06:19 -08:00
+++ b/drivers/net/8139too.c 2005-03-29 14:06:19 -08:00
@@ -749,7 +749,6 @@
pci_release_regions (pdev);
free_netdev(dev);
- pci_disable_device(pdev);
pci_set_drvdata (pdev, NULL);
}
@@ -778,7 +777,7 @@
struct net_device *dev;
struct rtl8139_private *tp;
u8 tmp8;
- int rc;
+ int rc, disable_dev_on_err = 0;
unsigned int i;
unsigned long pio_start, pio_end, pio_flags, pio_len;
unsigned long mmio_start, mmio_end, mmio_flags, mmio_len;
@@ -850,6 +849,7 @@
rc = pci_request_regions (pdev, "8139too");
if (rc)
goto err_out;
+ disable_dev_on_err = 1;
/* enable PCI bus-mastering */
pci_set_master (pdev);
@@ -935,6 +935,8 @@
err_out:
__rtl8139_cleanup_dev (dev);
+ if (disable_dev_on_err)
+ pci_disable_device (pdev);
return rc;
}
@@ -1112,6 +1114,7 @@
err_out:
__rtl8139_cleanup_dev (dev);
+ pci_disable_device (pdev);
return i;
}
@@ -1125,6 +1128,7 @@
unregister_netdev (dev);
__rtl8139_cleanup_dev (dev);
+ pci_disable_device (pdev);
}
-
To unsubscribe from this list: send the line "unsubscribe bk-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at http://vger.kernel.org/majordomo-info.html