In regulator_force_disable() there was a strange loop that looked like:

  while (rdev->open_count--)
    regulator_disable(rdev->supply);

I'm not totally sure what the goal was for this loop, but it seems
wrong to me.  If anything I think maybe we should have been looping
over our use_count, but even that might be a little strange.  For now
let's just remove the code and we can add something back in if someone
can explain what's expected.

Fixes: f8702f9e4aa7 ("regulator: core: Use ww_mutex for regulators locking")
Signed-off-by: Douglas Anderson <diand...@chromium.org>
---

 drivers/regulator/core.c | 4 ----
 1 file changed, 4 deletions(-)

diff --git a/drivers/regulator/core.c b/drivers/regulator/core.c
index 2eda87520832..963081aba17a 100644
--- a/drivers/regulator/core.c
+++ b/drivers/regulator/core.c
@@ -2738,10 +2738,6 @@ int regulator_force_disable(struct regulator *regulator)
 
        regulator_unlock_dependent(rdev, &ww_ctx);
 
-       if (rdev->supply)
-               while (rdev->open_count--)
-                       regulator_disable(rdev->supply);
-
        return ret;
 }
 EXPORT_SYMBOL_GPL(regulator_force_disable);
-- 
2.19.1.1215.g8438c0b245-goog

Reply via email to