projects/linux·commit ffdc307d

leds: 88pm860x: add missing of_node_put

ffdc307d · Julia Lawall <[email protected]> · 2015-10-24 16:42:30 +02:00

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

A simplified version of the semantic patch that fixes this problem is as
follows (http://coccinelle.lip6.fr):

// <smpl>
@@
local idexpression n;
expression e,r;
@@

 for_each_child_of_node(r,n) {
   ...
(
   of_node_put(n);
|
   e = n
|
+  of_node_put(n);
?  break;
)
   ...
 }
... when != n
// </smpl>

Signed-off-by: Julia Lawall <[email protected]>
Signed-off-by: Jacek Anaszewski <[email protected]>
Commit
ffdc307d038f02617041f8e5c7e3cd00a1706a2a
Parents
6cc76244

Changes

1 files changed · +1 −0

FileStatusAddDelContent
drivers/leds/leds-88pm860x.cmodified+1−0View file

drivers/leds/leds-88pm860x.c

View file
diff --git a/drivers/leds/leds-88pm860x.c b/drivers/leds/leds-88pm860x.c
index 1497a09..7870840 100644
--- a/drivers/leds/leds-88pm860x.c
+++ b/drivers/leds/leds-88pm860x.c
@@ -142,6 +142,7 @@ static int pm860x_led_dt_init(struct platform_device *pdev,
of_property_read_u32(np, "marvell,88pm860x-iset",
&iset);
data->iset = PM8606_LED_CURRENT(iset);
+ of_node_put(np);
break;
}
}