summaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
authorAlan Cox <alan@lxorguk.ukuu.org.uk>2007-04-23 15:47:59 +0200
committerPaul Mackerras <paulus@samba.org>2007-04-24 14:12:20 +0200
commitab4627683a0e4430cb5acb1cd896f08ec5dad90c (patch)
tree18f8ecf77c03e64d2aca845ec30d398874570ad9 /arch
parent[POWERPC] Abolish PHYS_FMT macro from arch/powerpc (diff)
downloadlinux-ab4627683a0e4430cb5acb1cd896f08ec5dad90c.tar.xz
linux-ab4627683a0e4430cb5acb1cd896f08ec5dad90c.zip
[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')
-rw-r--r--arch/powerpc/kernel/pci_32.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/arch/powerpc/kernel/pci_32.c b/arch/powerpc/kernel/pci_32.c
index 5b05a09a6bdf..f022862de344 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);
}
}