stable.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* Patch "regulator: core: fix regulator_lock_supply regression" has been added to the 4.4-stable tree
@ 2016-05-02 18:22 gregkh
  0 siblings, 0 replies; only message in thread
From: gregkh @ 2016-05-02 18:22 UTC (permalink / raw)
  To: arnd, broonie, geert, gregkh, linux; +Cc: stable, stable-commits


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 <stable@vger.kernel.org> know about it.


>From bb41897e38c53458a88b271f2fbcd905ee1f9584 Mon Sep 17 00:00:00 2001
From: Arnd Bergmann <arnd@arndb.de>
Date: Fri, 27 Nov 2015 14:46:41 +0100
Subject: regulator: core: fix regulator_lock_supply regression

From: Arnd Bergmann <arnd@arndb.de>

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:

> [ 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.

Reported-by: Geert Uytterhoeven <geert@linux-m68k.org>
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Fixes: 716fec9d1965 ("[SUBMITTED] regulator: core: avoid unused variable warning")
Signed-off-by: Mark Brown <broonie@kernel.org>
Cc: Guenter Roeck <linux@roeck-us.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 drivers/regulator/core.c |    3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

--- a/drivers/regulator/core.c
+++ b/drivers/regulator/core.c
@@ -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 arnd@arndb.de 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

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2016-05-02 18:22 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-05-02 18:22 Patch "regulator: core: fix regulator_lock_supply regression" has been added to the 4.4-stable tree gregkh

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).