From f6a5df1fdfd454210c7bf62386e8944e670645a3 Mon Sep 17 00:00:00 2001 From: Thierry Reding Date: Wed, 2 Dec 2015 16:54:50 +0100 Subject: regulator: core: Fix nested locking of supplies commit 70a7fb80e85a ("regulator: core: Fix nested locking of supplies") Commit fa731ac7ea04 ("regulator: core: avoid unused variable warning") introduced a subtle change in how supplies are locked. Where previously code was always locking the regulator of the current iteration, the new implementation only locks the regulator if it has a supply. For any given power tree that means that the root will never get locked. On the other hand the regulator_unlock_supply() will still release all the locks, which in turn causes the lock debugging code to warn about a mutex being unlocked which wasn't locked. Cc: Mark Brown Cc: Arnd Bergmann Fixes: fa731ac7ea04 ("regulator: core: avoid unused variable warning") Signed-off-by: Thierry Reding Signed-off-by: Mark Brown Cc: Guenter Roeck Signed-off-by: Greg Kroah-Hartman Git-commit: 70a7fb80e85ae7f78f8e90cec3fbd862ea6a4d4b Git-repo: git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git [ashayj@codeaurora.org: Fix the regulator bug which was re-introduced by commit f145f4] CRs-Fixed: 1065539 Change-Id: I376a6412bb65a1e193647eab54ad993df4c2c24f Signed-off-by: Ashay Jaiswal --- drivers/regulator/core.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/regulator/core.c b/drivers/regulator/core.c index d49d8606da15..27a5deb1213e 100644 --- a/drivers/regulator/core.c +++ b/drivers/regulator/core.c @@ -150,7 +150,7 @@ static void regulator_lock_supply(struct regulator_dev *rdev) { int i; - for (i = 0; rdev->supply; rdev = rdev_get_supply(rdev), i++) + for (i = 0; rdev; rdev = rdev_get_supply(rdev), i++) mutex_lock_nested(&rdev->mutex, i); } -- cgit v1.2.3