diff --git a/drivers/regulator/core.c b/drivers/regulator/core.c
index 8918271f9e85b20eff09e84398bc74b54645819d..5a33282181d84acf90d9ae4b4e9cdd738603aecf 100644
--- a/drivers/regulator/core.c
+++ b/drivers/regulator/core.c
@@ -3193,6 +3193,8 @@ regulator_register(const struct regulator_desc *regulator_desc,
 	unset_regulator_supplies(rdev);
 
 scrub:
+	if (rdev->supply)
+		regulator_put(rdev->supply);
 	kfree(rdev->constraints);
 	device_unregister(&rdev->dev);
 	/* device core frees rdev */