X-Git-Url: https://err.no/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=drivers%2Fpci%2Fbus.c;h=529d9d7727b01d1ea857388cb0514f2703c8f5b3;hb=04489eeb02a40bc15029886cef7285ada3ab0de6;hp=d708358326e556ae03e00b213e89dd1baf0dceff;hpb=54f53f2b94feb72622bec7a8563fc487d9f97720;p=linux-2.6 diff --git a/drivers/pci/bus.c b/drivers/pci/bus.c index d708358326..529d9d7727 100644 --- a/drivers/pci/bus.c +++ b/drivers/pci/bus.c @@ -84,10 +84,7 @@ int pci_bus_add_device(struct pci_dev *dev) if (retval) return retval; - down_write(&pci_bus_sem); - list_add_tail(&dev->global_list, &pci_devices); - up_write(&pci_bus_sem); - + dev->is_added = 1; pci_proc_attach_device(dev); pci_create_sysfs_dev_files(dev); return 0; @@ -112,11 +109,8 @@ void pci_bus_add_devices(struct pci_bus *bus) int retval; list_for_each_entry(dev, &bus->devices, bus_list) { - /* - * Skip already-present devices (which are on the - * global device list.) - */ - if (!list_empty(&dev->global_list)) + /* Skip already-added devices */ + if (dev->is_added) continue; retval = pci_bus_add_device(dev); if (retval) @@ -124,8 +118,7 @@ void pci_bus_add_devices(struct pci_bus *bus) } list_for_each_entry(dev, &bus->devices, bus_list) { - - BUG_ON(list_empty(&dev->global_list)); + BUG_ON(!dev->is_added); /* * If there is an unattached subordinate bus, attach