Patch "regulator: core: fix regulator_lock_supply regression" has been added to the 4.4-stable tree
Subsystems (2)
This is a note to let you know that I've just added the patch titled
regulator: core: fix regulator_lock_supply regression
to the 4.4-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
regulator-core-fix-regulator_lock_supply-regression.patch
and it can be found in the queue-4.4 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Quoted 1 line
From
bb41897e38c53458a88b271f2fbcd905ee1f9584Mon Sep 17 00:00:00 2001
From: Arnd Bergmann <[email protected]>
Date: Fri, 27 Nov 2015 14:46:41 +0100
Subject: regulator: core: fix regulator_lock_supply regression
From: Arnd Bergmann <[email protected]>
commit bb41897e38c53458a88b271f2fbcd905ee1f9584 upstream.
As noticed by Geert Uytterhoeven, my patch to avoid a harmless build warning in regulator_lock_supply() was total crap and introduced a real bug:
Quoted 3 lines
[ BUG: bad unlock balance detected! ] kworker/u4:0/6 is trying to release lock (
&rdev->mutex) at:
[<c0247b84>]regulator_set_voltage+0x38/0x50
we still lock the regulator supplies, but not the actual regulators, so we are missing a lock, and the unlock is unbalanced.
This rectifies it by first locking the regulator device itself before using the same loop as before to lock its supplies.
--- drivers/regulator/core.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
drivers/regulator/core.c +2 -1
@@ -140,7 +140,8 @@ static void regulator_lock_supply(struct {int i; -for (i =0 ; rdev->supply; rdev = rdev->supply->rdev, i++) +mutex_lock (&rdev->mutex); +for (i =1 ; rdev->supply; rdev = rdev->supply->rdev, i++)mutex_lock_nested (&rdev->mutex, i); }
Patches currently in stable-queue which might be from [email protected] are
queue-4.4/xen-kconfig-don-t-select-input_xen_kbddev_frontend.patch queue-4.4/asm-generic-futex-re-enable-preemption-in-futex_atomic_cmpxchg_inatomic.patch queue-4.4/regulator-core-fix-nested-locking-of-supplies.patch queue-4.4/regulator-core-fix-regulator_lock_supply-regression.patch queue-4.4/asoc-s3c24xx-use-const-snd_soc_component_driver-pointer.patch queue-4.4/revert-regulator-core-fix-nested-locking-of-supplies.patch