diff --git a/drivers/regulator/core.c b/drivers/regulator/core.c
index 9a33fe2021b6bb081277ef253a1a4d9972792fb6..87d9328f16950fc5069a93768a0e05682abdac41 100644
--- a/drivers/regulator/core.c
+++ b/drivers/regulator/core.c
@@ -1425,7 +1425,7 @@ int regulator_enable(struct regulator *regulator)
 	ret = _regulator_enable(rdev);
 	mutex_unlock(&rdev->mutex);
 
-	if (ret != 0)
+	if (ret != 0 && rdev->supply)
 		regulator_disable(rdev->supply);
 
 	return ret;