On Wed, 2013-05-15 at 00:51 +0800, Jiang Liu wrote:
> Enhance PPC architecture specific code to use hotplug-safe iterators
> to walk PCI buses.

I was about to ack it but then I saw:

> diff --git a/arch/powerpc/kernel/pci_64.c b/arch/powerpc/kernel/pci_64.c
> index 51a133a..a41c6dd 100644
> --- a/arch/powerpc/kernel/pci_64.c
> +++ b/arch/powerpc/kernel/pci_64.c
> @@ -208,7 +208,6 @@ 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 device_node *hose_node;
>  
> @@ -229,18 +228,16 @@ long sys_pciconfig_iobase(long which, unsigned long 
> in_bus,
>       /* That syscall isn't quite compatible with PCI domains, but it's
>        * 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);
> -             if (in_bus >= bus->number && in_bus <= bus->busn_res.end)
> +     for_each_pci_root_bus(bus)
> +             if (in_bus >= bus->number && in_bus <= bus->busn_res.end &&
> +                 bus->dev.of_node)
>                       break;
> -             bus = NULL;
> -     }
> -     if (bus == NULL || bus->dev.of_node == NULL)
> +     if (bus == NULL)
>               return -ENODEV;

You just removed the NULL check for the of_node field...
 
>       hose_node = bus->dev.of_node;
>       hose = PCI_DN(hose_node)->phb;

Which is dereferrenced here.    

> +     pci_bus_put(bus);

On the other hand, the whole thing can probably be using
pci_bus_to_host() instead.... the above code is bitrotted.

>       switch (which) {
>       case IOBASE_BRIDGE_NUMBER:
 
Cheeers,
Ben.


_______________________________________________
Linuxppc-dev mailing list
Linuxppc-dev@lists.ozlabs.org
https://lists.ozlabs.org/listinfo/linuxppc-dev

Reply via email to