From: Mark Brown broonie@linaro.org
Signed-off-by: Mark Brown broonie@linaro.org --- drivers/regulator/core.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/drivers/regulator/core.c b/drivers/regulator/core.c index e8604be..cfb17e6 100644 --- a/drivers/regulator/core.c +++ b/drivers/regulator/core.c @@ -3827,8 +3827,11 @@ void regulator_unregister(struct regulator_dev *rdev) if (rdev == NULL) return;
- if (rdev->supply) + if (rdev->supply) { + while (rdev->use_count--) + regulator_disable(rdev->supply); regulator_put(rdev->supply); + } mutex_lock(®ulator_list_mutex); debugfs_remove_recursive(rdev->debugfs); flush_work(&rdev->disable_work.work);