diff options
author | Jeff Garzik <jgarzik@pobox.com> | 2005-06-30 00:49:38 -0400 |
---|---|---|
committer | Jeff Garzik <jgarzik@pobox.com> | 2005-06-30 00:49:38 -0400 |
commit | e9dd2561793c05d70c9df1bc16a2dde6f23388df (patch) | |
tree | 20099972569cc0748133a6351600fff9cbb15f4a /drivers/pci/remove.c | |
parent | d011e151bc5d1a581bf35b492a4fde44d30382b9 (diff) | |
parent | 0c168775709faa74c1b87f1e61046e0c51ade7f3 (diff) |
Merge /spare/repo/netdev-2.6 branch 'ieee80211'
Diffstat (limited to 'drivers/pci/remove.c')
-rw-r--r-- | drivers/pci/remove.c | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/drivers/pci/remove.c b/drivers/pci/remove.c index 96f077f9a65..27a294b6965 100644 --- a/drivers/pci/remove.c +++ b/drivers/pci/remove.c @@ -18,17 +18,21 @@ static void pci_free_resources(struct pci_dev *dev) static void pci_destroy_dev(struct pci_dev *dev) { - pci_proc_detach_device(dev); - pci_remove_sysfs_dev_files(dev); - device_unregister(&dev->dev); + if (!list_empty(&dev->global_list)) { + pci_proc_detach_device(dev); + pci_remove_sysfs_dev_files(dev); + device_unregister(&dev->dev); + spin_lock(&pci_bus_lock); + list_del(&dev->global_list); + dev->global_list.next = dev->global_list.prev = NULL; + spin_unlock(&pci_bus_lock); + } /* Remove the device from the device lists, and prevent any further * list accesses from this device */ spin_lock(&pci_bus_lock); list_del(&dev->bus_list); - list_del(&dev->global_list); dev->bus_list.next = dev->bus_list.prev = NULL; - dev->global_list.next = dev->global_list.prev = NULL; spin_unlock(&pci_bus_lock); pci_free_resources(dev); |