mirror of
git://git.yoctoproject.org/linux-yocto.git
synced 2025-10-22 23:13:01 +02:00
net: dsa: mv88e6xxx: Fix fwnode reference leaks in mv88e6xxx_port_setup_leds
commit f63e7c8a83892781f6ceb55566f9497639c44555 upstream. Fix multiple fwnode reference leaks: 1. The function calls fwnode_get_named_child_node() to get the "leds" node, but never calls fwnode_handle_put(leds) to release this reference. 2. Within the fwnode_for_each_child_node() loop, the early return paths that don't properly release the "led" fwnode reference. This fix follows the same pattern as commitd029edefed
("net dsa: qca8k: fix usages of device_get_named_child_node()") Fixes:94a2a84f5e
("net: dsa: mv88e6xxx: Support LED control") Cc: stable@vger.kernel.org Signed-off-by: Miaoqian Lin <linmq006@gmail.com> Reviewed-by: Linus Walleij <linus.walleij@linaro.org> Link: https://patch.msgid.link/20250901073224.2273103-1-linmq006@gmail.com Signed-off-by: Jakub Kicinski <kuba@kernel.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
0aec321128
commit
686b70cf18
|
@ -779,7 +779,8 @@ int mv88e6xxx_port_setup_leds(struct mv88e6xxx_chip *chip, int port)
|
|||
continue;
|
||||
if (led_num > 1) {
|
||||
dev_err(dev, "invalid LED specified port %d\n", port);
|
||||
return -EINVAL;
|
||||
ret = -EINVAL;
|
||||
goto err_put_led;
|
||||
}
|
||||
|
||||
if (led_num == 0)
|
||||
|
@ -823,17 +824,25 @@ int mv88e6xxx_port_setup_leds(struct mv88e6xxx_chip *chip, int port)
|
|||
init_data.devname_mandatory = true;
|
||||
init_data.devicename = kasprintf(GFP_KERNEL, "%s:0%d:0%d", chip->info->name,
|
||||
port, led_num);
|
||||
if (!init_data.devicename)
|
||||
return -ENOMEM;
|
||||
if (!init_data.devicename) {
|
||||
ret = -ENOMEM;
|
||||
goto err_put_led;
|
||||
}
|
||||
|
||||
ret = devm_led_classdev_register_ext(dev, l, &init_data);
|
||||
kfree(init_data.devicename);
|
||||
|
||||
if (ret) {
|
||||
dev_err(dev, "Failed to init LED %d for port %d", led_num, port);
|
||||
return ret;
|
||||
goto err_put_led;
|
||||
}
|
||||
}
|
||||
|
||||
fwnode_handle_put(leds);
|
||||
return 0;
|
||||
|
||||
err_put_led:
|
||||
fwnode_handle_put(led);
|
||||
fwnode_handle_put(leds);
|
||||
return ret;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue
Block a user