diff options
| -rw-r--r-- | drivers/input/keyboard/cap11xx.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/drivers/input/keyboard/cap11xx.c b/drivers/input/keyboard/cap11xx.c index 378db10001df..4401be225d64 100644 --- a/drivers/input/keyboard/cap11xx.c +++ b/drivers/input/keyboard/cap11xx.c | |||
| @@ -304,8 +304,10 @@ static int cap11xx_init_leds(struct device *dev, | |||
| 304 | led->cdev.brightness = LED_OFF; | 304 | led->cdev.brightness = LED_OFF; |
| 305 | 305 | ||
| 306 | error = of_property_read_u32(child, "reg", ®); | 306 | error = of_property_read_u32(child, "reg", ®); |
| 307 | if (error != 0 || reg >= num_leds) | 307 | if (error != 0 || reg >= num_leds) { |
| 308 | of_node_put(child); | ||
| 308 | return -EINVAL; | 309 | return -EINVAL; |
| 310 | } | ||
| 309 | 311 | ||
| 310 | led->reg = reg; | 312 | led->reg = reg; |
| 311 | led->priv = priv; | 313 | led->priv = priv; |
| @@ -313,8 +315,10 @@ static int cap11xx_init_leds(struct device *dev, | |||
| 313 | INIT_WORK(&led->work, cap11xx_led_work); | 315 | INIT_WORK(&led->work, cap11xx_led_work); |
| 314 | 316 | ||
| 315 | error = devm_led_classdev_register(dev, &led->cdev); | 317 | error = devm_led_classdev_register(dev, &led->cdev); |
| 316 | if (error) | 318 | if (error) { |
| 319 | of_node_put(child); | ||
| 317 | return error; | 320 | return error; |
| 321 | } | ||
| 318 | 322 | ||
| 319 | priv->num_leds++; | 323 | priv->num_leds++; |
| 320 | led++; | 324 | led++; |
