mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-12-28 16:56:26 +00:00
leds: tca6507: Switch to device_for_each_child_node_scoped()
Switch to device_for_each_child_node_scoped() to simplify the code by removing the need for calls to fwnode_handle_put() in the error path. This also prevents possible memory leaks if new error paths are added without the required call to fwnode_handle_put(). Signed-off-by: Javier Carrasco <javier.carrasco.cruz@gmail.com> Link: https://lore.kernel.org/r/20240927-leds_device_for_each_child_node_scoped-v1-16-95c0614b38c8@gmail.com Signed-off-by: Lee Jones <lee@kernel.org>
This commit is contained in:
parent
8cf103de9a
commit
01728d0419
@ -658,7 +658,6 @@ static struct tca6507_platform_data *
|
||||
tca6507_led_dt_init(struct device *dev)
|
||||
{
|
||||
struct tca6507_platform_data *pdata;
|
||||
struct fwnode_handle *child;
|
||||
struct led_info *tca_leds;
|
||||
int count;
|
||||
|
||||
@ -671,7 +670,7 @@ tca6507_led_dt_init(struct device *dev)
|
||||
if (!tca_leds)
|
||||
return ERR_PTR(-ENOMEM);
|
||||
|
||||
device_for_each_child_node(dev, child) {
|
||||
device_for_each_child_node_scoped(dev, child) {
|
||||
struct led_info led;
|
||||
u32 reg;
|
||||
int ret;
|
||||
@ -688,10 +687,8 @@ tca6507_led_dt_init(struct device *dev)
|
||||
led.flags |= TCA6507_MAKE_GPIO;
|
||||
|
||||
ret = fwnode_property_read_u32(child, "reg", ®);
|
||||
if (ret || reg >= NUM_LEDS) {
|
||||
fwnode_handle_put(child);
|
||||
if (ret || reg >= NUM_LEDS)
|
||||
return ERR_PTR(ret ? : -EINVAL);
|
||||
}
|
||||
|
||||
tca_leds[reg] = led;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user