ACPI: acpi_pci_unbind should clean up properly after acpi_pci_bind
authorAlexander Chiang <achiang@hp.com>
Wed, 10 Jun 2009 19:55:45 +0000 (19:55 +0000)
committerLen Brown <len.brown@intel.com>
Thu, 18 Jun 2009 03:22:16 +0000 (23:22 -0400)
In acpi_pci_bind, we set device->ops.bind and device->ops.unbind, but
never clear them out.

Signed-off-by: Alex Chiang <achiang@hp.com>
Acked-by: Bjorn Helgaas <bjorn.helgaas@hp.com>
Signed-off-by: Len Brown <len.brown@intel.com>
drivers/acpi/pci_bind.c

index 62cb383..a205769 100644 (file)
@@ -109,12 +109,15 @@ static int acpi_pci_unbind(struct acpi_device *device)
        struct pci_dev *dev;
 
        dev = acpi_get_pci_dev(device->handle);
-       if (!dev)
-               return 0;
+       if (!dev || !dev->subordinate)
+               goto out;
 
-       if (dev->subordinate)
-               acpi_pci_irq_del_prt(dev->subordinate);
+       acpi_pci_irq_del_prt(dev->subordinate);
+
+       device->ops.bind = NULL;
+       device->ops.unbind = NULL;
 
+out:
        pci_dev_put(dev);
        return 0;
 }