diff --git a/drivers/power/power_supply_core.c b/drivers/power/power_supply_core.c
index 7657335ea7f99064a90da5d3112bac2d9b91ded3..8a86cd138de8c91a7496064c068f33bd8b0f028e 100644
--- a/drivers/power/power_supply_core.c
+++ b/drivers/power/power_supply_core.c
@@ -218,12 +218,12 @@ static int power_supply_check_supplies(struct power_supply *psy)
 			break;
 
 		ret = power_supply_find_supply_from_node(np);
+		of_node_put(np);
+
 		if (ret) {
 			dev_dbg(psy->dev, "Failed to find supply, defer!\n");
-			of_node_put(np);
 			return -EPROBE_DEFER;
 		}
-		of_node_put(np);
 	} while (np);
 
 	/* Missing valid "power-supplies" entries */