X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=drivers%2Fpcmcia%2Fcardbus.c;h=8bde61952d20e4371b26cd80b31098cb392b67ea;hb=5ef68e8867ca9d979644d05c6045b2c79d8989de;hp=b2a98cdbd0d289dee032dfd71cd540ead129b8cc;hpb=364e751787d5fed1f2ae0b72cbfb66b3aa1adb19;p=deliverable%2Flinux.git diff --git a/drivers/pcmcia/cardbus.c b/drivers/pcmcia/cardbus.c index b2a98cdbd0d2..8bde61952d20 100644 --- a/drivers/pcmcia/cardbus.c +++ b/drivers/pcmcia/cardbus.c @@ -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(); }