diff options
author | Julia Lawall <Julia.Lawall@lip6.fr> | 2017-07-15 05:58:19 -0400 |
---|---|---|
committer | Jacek Anaszewski <jacek.anaszewski@gmail.com> | 2017-07-16 12:45:43 -0400 |
commit | c68729119f4d2993bec3c9cb999ad76de5aeddba (patch) | |
tree | b1713aa8c04b372cce31504f707bf7565647b41f /drivers/leds/leds-tlc591xx.c | |
parent | 1055790b0df7202e363a55817688e3edbe1498a4 (diff) |
leds: tlc591xx: add missing of_node_put
for_each_child_of_node performs an of_node_get on each iteration, so a
return from the loop requires an of_node_put.
The semantic patch that fixes this problem is as follows
(http://coccinelle.lip6.fr):
// <smpl>
@@
local idexpression n;
expression e,e1;
iterator name for_each_child_of_node;
@@
for_each_child_of_node(e1,n) {
...
(
of_node_put(n);
|
e = n
|
return n;
|
+ of_node_put(n);
? return ...;
)
...
}
// </smpl>
Signed-off-by: Julia Lawall <Julia.Lawall@lip6.fr>
Acked-by: Pavel Machek <pavel@ucw.cz>
Signed-off-by: Jacek Anaszewski <jacek.anaszewski@gmail.com>
Diffstat (limited to 'drivers/leds/leds-tlc591xx.c')
-rw-r--r-- | drivers/leds/leds-tlc591xx.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/drivers/leds/leds-tlc591xx.c b/drivers/leds/leds-tlc591xx.c index fcc87ee82453..f5357f6d9e58 100644 --- a/drivers/leds/leds-tlc591xx.c +++ b/drivers/leds/leds-tlc591xx.c | |||
@@ -230,11 +230,15 @@ tlc591xx_probe(struct i2c_client *client, | |||
230 | 230 | ||
231 | for_each_child_of_node(np, child) { | 231 | for_each_child_of_node(np, child) { |
232 | err = of_property_read_u32(child, "reg", ®); | 232 | err = of_property_read_u32(child, "reg", ®); |
233 | if (err) | 233 | if (err) { |
234 | of_node_put(child); | ||
234 | return err; | 235 | return err; |
236 | } | ||
235 | if (reg < 0 || reg >= tlc591xx->max_leds || | 237 | if (reg < 0 || reg >= tlc591xx->max_leds || |
236 | priv->leds[reg].active) | 238 | priv->leds[reg].active) { |
239 | of_node_put(child); | ||
237 | return -EINVAL; | 240 | return -EINVAL; |
241 | } | ||
238 | priv->leds[reg].active = true; | 242 | priv->leds[reg].active = true; |
239 | priv->leds[reg].ldev.name = | 243 | priv->leds[reg].ldev.name = |
240 | of_get_property(child, "label", NULL) ? : child->name; | 244 | of_get_property(child, "label", NULL) ? : child->name; |