tca6507_led_dt_init(struct device *dev)
 {
        struct tca6507_platform_data *pdata;
-       struct fwnode_handle *child;
        struct led_info *tca_leds;
        int count;
 
        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;
                        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;
        }