pci_dma_bus_setup_pSeries() should use of_get_next_parent() to safely iterate through the parent nodes.
Signed-off-by: Michael Ellerman <[EMAIL PROTECTED]> --- arch/powerpc/platforms/pseries/iommu.c | 10 +++++----- 1 files changed, 5 insertions(+), 5 deletions(-) diff --git a/arch/powerpc/platforms/pseries/iommu.c b/arch/powerpc/platforms/pseries/iommu.c index be17d23..83c0e0f 100644 --- a/arch/powerpc/platforms/pseries/iommu.c +++ b/arch/powerpc/platforms/pseries/iommu.c @@ -314,7 +314,7 @@ static void pci_dma_bus_setup_pSeries(struct pci_bus *bus) { struct device_node *dn; struct iommu_table *tbl; - struct device_node *isa_dn, *isa_dn_orig; + struct device_node *isa_dn; struct device_node *tmp; struct pci_dn *pci; int children; @@ -334,13 +334,13 @@ static void pci_dma_bus_setup_pSeries(struct pci_bus *bus) /* Check if the ISA bus on the system is under * this PHB. */ - isa_dn = isa_dn_orig = of_find_node_by_type(NULL, "isa"); + isa_dn = of_find_node_by_type(NULL, "isa"); while (isa_dn && isa_dn != dn) - isa_dn = isa_dn->parent; + isa_dn = of_get_next_parent(isa_dn); - if (isa_dn_orig) - of_node_put(isa_dn_orig); + /* Drop our reference, it's still safe to check the pointer below */ + of_node_put(isa_dn); /* Count number of direct PCI children of the PHB. */ for (children = 0, tmp = dn->child; tmp; tmp = tmp->sibling) -- 1.5.2.rc1.1884.g59b20 _______________________________________________ Linuxppc-dev mailing list Linuxppc-dev@ozlabs.org https://ozlabs.org/mailman/listinfo/linuxppc-dev