On Sun, Jan 27, 2013 at 7:48 PM, Yijing Wang wrote: > On 2013/1/28 3:23, Yinghai Lu wrote: >> diff --git a/arch/powerpc/kernel/pci_64.c b/arch/powerpc/kernel/pci_64.c >> index 2cbe676..f848325 100644 >> --- a/arch/powerpc/kernel/pci_64.c >> +++ b/arch/powerpc/kernel/pci_64.c >> @@ -208,9 +208,9 @@ long sys_pciconfig_iobase(long which, unsigned long in_bus, >> unsigned long in_devfn) >> { >> struct pci_controller* hose; >> - struct list_head *ln; >> - struct pci_bus *bus = NULL; >> + struct pci_bus *bus; >> struct device_node *hose_node; >> + struct pci_host_bridge *host_bridge = NULL; >> >> /* Argh ! Please forgive me for that hack, but that's the >> * simplest way to get existing XFree to not lockup on some >> @@ -230,8 +230,8 @@ long sys_pciconfig_iobase(long which, unsigned long in_bus, >> * used on pre-domains setup. We return the first match >> */ >> >> - for (ln = pci_root_buses.next; ln != &pci_root_buses; ln = ln->next) { >> - bus = pci_bus_b(ln); >> + for_each_pci_host_bridge(host_bridge) { >> + bus = host_bridge->bus; >> if (in_bus >= bus->number && in_bus <= bus->busn_res.end) > > Need put_device(&host_bridge->dev). > fixed in attached. Thanks Yinghai