aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/pci/remove.c
diff options
context:
space:
mode:
authorGreg Kroah-Hartman <gregkh@suse.de>2008-02-14 17:56:56 -0500
committerGreg Kroah-Hartman <gregkh@suse.de>2008-04-21 00:47:00 -0400
commit8a1bc9013a03d41a0e36ee413bb6f97281b30bd1 (patch)
tree83c01850e1779e37be1d9db0f87436b09b89f3fe /drivers/pci/remove.c
parent70308923d317f2ad4973c30d90bb48ae38761317 (diff)
PCI: add is_added flag to struct pci_dev
This lets us check if the device is really added to the driver core or not, which is what we need when walking some of the bus lists. The flag is there in anticipation of getting rid of the other PCI device list, which is what we used to check in this situation. Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'drivers/pci/remove.c')
-rw-r--r--drivers/pci/remove.c6
1 files changed, 2 insertions, 4 deletions
diff --git a/drivers/pci/remove.c b/drivers/pci/remove.c
index 9684e1bde277..d3c77cbe3279 100644
--- a/drivers/pci/remove.c
+++ b/drivers/pci/remove.c
@@ -18,13 +18,11 @@ static void pci_free_resources(struct pci_dev *dev)
18 18
19static void pci_stop_dev(struct pci_dev *dev) 19static void pci_stop_dev(struct pci_dev *dev)
20{ 20{
21 if (!dev->global_list.next) 21 if (dev->is_added) {
22 return;
23
24 if (!list_empty(&dev->global_list)) {
25 pci_proc_detach_device(dev); 22 pci_proc_detach_device(dev);
26 pci_remove_sysfs_dev_files(dev); 23 pci_remove_sysfs_dev_files(dev);
27 device_unregister(&dev->dev); 24 device_unregister(&dev->dev);
25 dev->is_added = 0;
28 down_write(&pci_bus_sem); 26 down_write(&pci_bus_sem);
29 list_del(&dev->global_list); 27 list_del(&dev->global_list);
30 dev->global_list.next = dev->global_list.prev = NULL; 28 dev->global_list.next = dev->global_list.prev = NULL;