diff options
author | Alan Cox <alan@lxorguk.ukuu.org.uk> | 2007-04-23 14:47:59 +0100 |
---|---|---|
committer | Paul Mackerras <paulus@samba.org> | 2007-04-24 22:12:20 +1000 |
commit | ab4627683a0e4430cb5acb1cd896f08ec5dad90c (patch) | |
tree | 18f8ecf77c03e64d2aca845ec30d398874570ad9 /arch/powerpc/kernel/pci_32.c | |
parent | 37f01d64d83705f82bb06eac8134acc8ef665565 (diff) | |
download | op-kernel-dev-ab4627683a0e4430cb5acb1cd896f08ec5dad90c.zip op-kernel-dev-ab4627683a0e4430cb5acb1cd896f08ec5dad90c.tar.gz |
[POWERPC] pci_32.c: Switch to ref counting PCI API
pci_find_slot isn't hot-plug safe. Move this code to the pci hotplug
safe equivalent and hold a refcount properly while doing
make_one_node_map.
Signed-off-by: Alan Cox <alan@redhat.com>
Signed-off-by: Paul Mackerras <paulus@samba.org>
Diffstat (limited to 'arch/powerpc/kernel/pci_32.c')
-rw-r--r-- | arch/powerpc/kernel/pci_32.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/arch/powerpc/kernel/pci_32.c b/arch/powerpc/kernel/pci_32.c index 5b05a09..f022862 100644 --- a/arch/powerpc/kernel/pci_32.c +++ b/arch/powerpc/kernel/pci_32.c @@ -656,10 +656,13 @@ make_one_node_map(struct device_node* node, u8 pci_bus) reg = of_get_property(node, "reg", NULL); if (!reg) continue; - dev = pci_find_slot(pci_bus, ((reg[0] >> 8) & 0xff)); - if (!dev || !dev->subordinate) + dev = pci_get_bus_and_slot(pci_bus, ((reg[0] >> 8) & 0xff)); + if (!dev || !dev->subordinate) { + pci_dev_put(dev); continue; + } make_one_node_map(node, dev->subordinate->number); + pci_dev_put(dev); } } |