|
@@ -230,11 +230,15 @@ tlc591xx_probe(struct i2c_client *client,
|
|
|
|
|
|
for_each_child_of_node(np, child) {
|
|
|
err = of_property_read_u32(child, "reg", ®);
|
|
|
- if (err)
|
|
|
+ if (err) {
|
|
|
+ of_node_put(child);
|
|
|
return err;
|
|
|
+ }
|
|
|
if (reg < 0 || reg >= tlc591xx->max_leds ||
|
|
|
- priv->leds[reg].active)
|
|
|
+ priv->leds[reg].active) {
|
|
|
+ of_node_put(child);
|
|
|
return -EINVAL;
|
|
|
+ }
|
|
|
priv->leds[reg].active = true;
|
|
|
priv->leds[reg].ldev.name =
|
|
|
of_get_property(child, "label", NULL) ? : child->name;
|