Commit e41d574b authored by Javier Carrasco's avatar Javier Carrasco Committed by Lee Jones

leds: mt6360: Fix memory leak in mt6360_init_isnk_properties()

The fwnode_for_each_child_node() loop requires manual intervention to
decrement the child refcount in case of an early return.

Add the missing calls to fwnode_handle_put(child) to avoid memory leaks
in the error paths.

Cc: stable@vger.kernel.org
Fixes: 679f8652 ("leds: Add mt6360 driver")
Signed-off-by: default avatarJavier Carrasco <javier.carrasco.cruz@gmail.com>
Acked-by: default avatarPavel Machek <pavel@ucw.cz>
Link: https://lore.kernel.org/r/20240611-leds-mt6360-memleak-v1-1-93642eb5011e@gmail.comSigned-off-by: default avatarLee Jones <lee@kernel.org>
parent 8d89afc6
...@@ -643,14 +643,17 @@ static int mt6360_init_isnk_properties(struct mt6360_led *led, ...@@ -643,14 +643,17 @@ static int mt6360_init_isnk_properties(struct mt6360_led *led,
ret = fwnode_property_read_u32(child, "reg", &reg); ret = fwnode_property_read_u32(child, "reg", &reg);
if (ret || reg > MT6360_LED_ISNK3 || if (ret || reg > MT6360_LED_ISNK3 ||
priv->leds_active & BIT(reg)) priv->leds_active & BIT(reg)) {
fwnode_handle_put(child);
return -EINVAL; return -EINVAL;
}
ret = fwnode_property_read_u32(child, "color", &color); ret = fwnode_property_read_u32(child, "color", &color);
if (ret) { if (ret) {
dev_err(priv->dev, dev_err(priv->dev,
"led %d, no color specified\n", "led %d, no color specified\n",
led->led_no); led->led_no);
fwnode_handle_put(child);
return ret; return ret;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment