for_each_node_by_name performs an of_node_get on each
iteration, so a break out of the loop requires an
of_node_put.

This was done using the Coccinelle semantic patch
iterators/for_each_child.cocci

Signed-off-by: Julia Lawall <julia.law...@inria.fr>

---
 arch/powerpc/platforms/powermac/low_i2c.c |    4 +++-
 arch/powerpc/platforms/powermac/smp.c     |    4 +++-
 2 files changed, 6 insertions(+), 2 deletions(-)

diff -u -p a/arch/powerpc/platforms/powermac/smp.c 
b/arch/powerpc/platforms/powermac/smp.c
--- a/arch/powerpc/platforms/powermac/smp.c
+++ b/arch/powerpc/platforms/powermac/smp.c
@@ -598,8 +598,10 @@ static void __init smp_core99_setup_i2c_
                        name = "Pulsar";
                        break;
                }
-               if (pmac_tb_freeze != NULL)
+               if (pmac_tb_freeze != NULL) {
+                       of_node_put(cc);
                        break;
+               }
        }
        if (pmac_tb_freeze != NULL) {
                /* Open i2c bus for synchronous access */
diff -u -p a/arch/powerpc/platforms/powermac/low_i2c.c 
b/arch/powerpc/platforms/powermac/low_i2c.c
--- a/arch/powerpc/platforms/powermac/low_i2c.c
+++ b/arch/powerpc/platforms/powermac/low_i2c.c
@@ -925,8 +925,10 @@ static void __init smu_i2c_probe(void)
 
                sz = sizeof(struct pmac_i2c_bus) + sizeof(struct smu_i2c_cmd);
                bus = kzalloc(sz, GFP_KERNEL);
-               if (bus == NULL)
+               if (bus == NULL) {
+                       of_node_put(busnode);
                        return;
+               }
 
                bus->controller = controller;
                bus->busnode = of_node_get(busnode);

Reply via email to