|
|
@@ -304,8 +304,10 @@ static int cap11xx_init_leds(struct device *dev,
|
|
|
led->cdev.brightness = LED_OFF;
|
|
|
|
|
|
error = of_property_read_u32(child, "reg", ®);
|
|
|
- if (error != 0 || reg >= num_leds)
|
|
|
+ if (error != 0 || reg >= num_leds) {
|
|
|
+ of_node_put(child);
|
|
|
return -EINVAL;
|
|
|
+ }
|
|
|
|
|
|
led->reg = reg;
|
|
|
led->priv = priv;
|
|
|
@@ -313,8 +315,10 @@ static int cap11xx_init_leds(struct device *dev,
|
|
|
INIT_WORK(&led->work, cap11xx_led_work);
|
|
|
|
|
|
error = devm_led_classdev_register(dev, &led->cdev);
|
|
|
- if (error)
|
|
|
+ if (error) {
|
|
|
+ of_node_put(child);
|
|
|
return error;
|
|
|
+ }
|
|
|
|
|
|
priv->num_leds++;
|
|
|
led++;
|