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 <dianders@xxxxxxxxxxxx> --- 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