[PATCH] airo: disable the PCI device when unloading module
authorMichal Schmidt <mschmidt@redhat.com>
Fri, 29 Jun 2007 13:33:30 +0000 (15:33 +0200)
committerJohn W. Linville <linville@tuxdriver.com>
Tue, 10 Jul 2007 18:11:28 +0000 (14:11 -0400)
Fix an assymetry between pci_{enable,disable}_device. airo did not disable
the PCI device when unloading the module. This caused suspend failures
after modprobe -r airo && modprobe airo.

Signed-off-by: Michal Schmidt <mschmidt@redhat.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
drivers/net/wireless/airo.c

index 2d3a180dada035492f1c3d058e6ca63e3d7d0b69..57da70b07f1f90acdc430b51871dd6a0de35be7c 100644 (file)
@@ -5597,8 +5597,10 @@ static int __devinit airo_pci_probe(struct pci_dev *pdev,
                        dev = _init_airo_card(pdev->irq, pdev->resource[0].start, 0, pdev, &pdev->dev);
        else
                        dev = _init_airo_card(pdev->irq, pdev->resource[2].start, 0, pdev, &pdev->dev);
-       if (!dev)
+       if (!dev) {
+               pci_disable_device(pdev);
                return -ENODEV;
+       }
 
        pci_set_drvdata(pdev, dev);
        return 0;
@@ -5610,6 +5612,8 @@ static void __devexit airo_pci_remove(struct pci_dev *pdev)
 
        airo_print_info(dev->name, "Unregistering...");
        stop_airo_card(dev, 1);
+       pci_disable_device(pdev);
+       pci_set_drvdata(pdev, NULL);
 }
 
 static int airo_pci_suspend(struct pci_dev *pdev, pm_message_t state)