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

Reply via email to