pcmcia: Use global PCI rescan-remove locking
[deliverable/linux.git] / drivers / pcmcia / cardbus.c
index b2a98cdbd0d289dee032dfd71cd540ead129b8cc..8bde61952d20e4371b26cd80b31098cb392b67ea 100644 (file)
@@ -70,6 +70,8 @@ int __ref cb_alloc(struct pcmcia_socket *s)
        struct pci_dev *dev;
        unsigned int max, pass;
 
+       pci_lock_rescan_remove();
+
        s->functions = pci_scan_slot(bus, PCI_DEVFN(0, 0));
        pci_fixup_cardbus(bus);
 
@@ -93,6 +95,7 @@ int __ref cb_alloc(struct pcmcia_socket *s)
 
        pci_bus_add_devices(bus);
 
+       pci_unlock_rescan_remove();
        return 0;
 }
 
@@ -115,6 +118,10 @@ void cb_free(struct pcmcia_socket *s)
        if (!bus)
                return;
 
+       pci_lock_rescan_remove();
+
        list_for_each_entry_safe(dev, tmp, &bus->devices, bus_list)
                pci_stop_and_remove_bus_device(dev);
+
+       pci_unlock_rescan_remove();
 }
This page took 0.035194 seconds and 5 git commands to generate.