{
        struct gsc_hwmon_platform_data *pdata;
        struct gsc_hwmon_channel *ch;
-       struct fwnode_handle *child;
        struct device_node *fan;
        int nchannels;
 
 
        ch = pdata->channels;
        /* allocate structures for channels and count instances of each type */
-       device_for_each_child_node(dev, child) {
+       device_for_each_child_node_scoped(dev, child) {
                if (fwnode_property_read_string(child, "label", &ch->name)) {
                        dev_err(dev, "channel without label\n");
-                       fwnode_handle_put(child);
                        return ERR_PTR(-EINVAL);
                }
                if (fwnode_property_read_u32(child, "reg", &ch->reg)) {
                        dev_err(dev, "channel without reg\n");
-                       fwnode_handle_put(child);
                        return ERR_PTR(-EINVAL);
                }
                if (fwnode_property_read_u32(child, "gw,mode", &ch->mode)) {
                        dev_err(dev, "channel without mode\n");
-                       fwnode_handle_put(child);
                        return ERR_PTR(-EINVAL);
                }
                if (ch->mode > mode_max) {
                        dev_err(dev, "invalid channel mode\n");
-                       fwnode_handle_put(child);
                        return ERR_PTR(-EINVAL);
                }