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

Reply via email to