int error, index = 0;
        unsigned int keycount;
        struct mt6397_chip *pmic_chip = dev_get_drvdata(pdev->dev.parent);
-       struct device_node *node = pdev->dev.of_node, *child;
+       struct device_node *node = pdev->dev.of_node;
        static const char *const irqnames[] = { "powerkey", "homekey" };
        static const char *const irqnames_r[] = { "powerkey_r", "homekey_r" };
        struct mtk_pmic_keys *keys;
                return -EINVAL;
        }
 
-       for_each_child_of_node(node, child) {
+       for_each_child_of_node_scoped(node, child) {
                keys->keys[index].regs = &mtk_pmic_regs->keys_regs[index];
 
                keys->keys[index].irq =
                        platform_get_irq_byname(pdev, irqnames[index]);
-               if (keys->keys[index].irq < 0) {
-                       of_node_put(child);
+               if (keys->keys[index].irq < 0)
                        return keys->keys[index].irq;
-               }
 
                if (of_device_is_compatible(node, "mediatek,mt6358-keys")) {
                        keys->keys[index].irq_r = platform_get_irq_byname(pdev,
                                                                          irqnames_r[index]);
 
-                       if (keys->keys[index].irq_r < 0) {
-                               of_node_put(child);
+                       if (keys->keys[index].irq_r < 0)
                                return keys->keys[index].irq_r;
-                       }
                }
 
                error = of_property_read_u32(child,
                        dev_err(keys->dev,
                                "failed to read key:%d linux,keycode property: %d\n",
                                index, error);
-                       of_node_put(child);
                        return error;
                }
 
                        keys->keys[index].wakeup = true;
 
                error = mtk_pmic_key_setup(keys, &keys->keys[index]);
-               if (error) {
-                       of_node_put(child);
+               if (error)
                        return error;
-               }
 
                index++;
        }