From: Greg Kroah-Hartman Date: Fri, 18 Mar 2016 21:32:19 +0000 (-0700) Subject: 4.4-stable patches X-Git-Tag: v4.5.1~44 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=66f5d9f3f897585108abf9fe2a6f9352315bc039;p=thirdparty%2Fkernel%2Fstable-queue.git 4.4-stable patches added patches: regulator-core-avoid-unused-variable-warning.patch regulator-core-fix-nested-locking-of-supplies.patch --- diff --git a/queue-4.4/regulator-core-avoid-unused-variable-warning.patch b/queue-4.4/regulator-core-avoid-unused-variable-warning.patch new file mode 100644 index 00000000000..9324ee85ad3 --- /dev/null +++ b/queue-4.4/regulator-core-avoid-unused-variable-warning.patch @@ -0,0 +1,62 @@ +From fa731ac7ea04a7d3a5c6d2f568132478c02a83b3 Mon Sep 17 00:00:00 2001 +From: Arnd Bergmann +Date: Fri, 20 Nov 2015 15:24:39 +0100 +Subject: regulator: core: avoid unused variable warning + +From: Arnd Bergmann + +commit fa731ac7ea04a7d3a5c6d2f568132478c02a83b3 upstream. + +The second argument of the mutex_lock_nested() helper is only +evaluated if CONFIG_DEBUG_LOCK_ALLOC is set. Otherwise we +get this build warning for the new regulator_lock_supply +function: + +drivers/regulator/core.c: In function 'regulator_lock_supply': +drivers/regulator/core.c:142:6: warning: unused variable 'i' [-Wunused-variable] + +To avoid the warning, this restructures the code to make it +both simpler and to move the 'i++' outside of the mutex_lock_nested +call, where it is now always used and the variable is not +flagged as unused. + +We had some discussion about changing mutex_lock_nested to an +inline function, which would make the code do the right thing here, +but in the end decided against it, in order to guarantee that +mutex_lock_nested() does not introduced overhead without +CONFIG_DEBUG_LOCK_ALLOC. + +Signed-off-by: Arnd Bergmann +Fixes: 9f01cd4a915 ("regulator: core: introduce function to lock regulators and its supplies") +Link: http://permalink.gmane.org/gmane.linux.kernel/2068900 +Signed-off-by: Mark Brown +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/regulator/core.c | 14 +++----------- + 1 file changed, 3 insertions(+), 11 deletions(-) + +--- a/drivers/regulator/core.c ++++ b/drivers/regulator/core.c +@@ -138,18 +138,10 @@ static bool have_full_constraints(void) + */ + static void regulator_lock_supply(struct regulator_dev *rdev) + { +- struct regulator *supply; +- int i = 0; ++ int i; + +- while (1) { +- mutex_lock_nested(&rdev->mutex, i++); +- supply = rdev->supply; +- +- if (!rdev->supply) +- return; +- +- rdev = supply->rdev; +- } ++ for (i = 0; rdev->supply; rdev = rdev->supply->rdev, i++) ++ mutex_lock_nested(&rdev->mutex, i); + } + + /** diff --git a/queue-4.4/regulator-core-fix-nested-locking-of-supplies.patch b/queue-4.4/regulator-core-fix-nested-locking-of-supplies.patch new file mode 100644 index 00000000000..19c602fb80c --- /dev/null +++ b/queue-4.4/regulator-core-fix-nested-locking-of-supplies.patch @@ -0,0 +1,56 @@ +From 70a7fb80e85ae7f78f8e90cec3fbd862ea6a4d4b 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 + +From: Thierry Reding + +commit 70a7fb80e85ae7f78f8e90cec3fbd862ea6a4d4b upstream. + +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: Fixes: fa731ac7ea04 ("regulator: core: avoid unused variable warning") +Signed-off-by: Thierry Reding +Signed-off-by: Mark Brown +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/regulator/core.c | 10 +++++++++- + 1 file changed, 9 insertions(+), 1 deletion(-) + +--- a/drivers/regulator/core.c ++++ b/drivers/regulator/core.c +@@ -132,6 +132,14 @@ static bool have_full_constraints(void) + return has_full_constraints || of_have_populated_dt(); + } + ++static inline struct regulator_dev *rdev_get_supply(struct regulator_dev *rdev) ++{ ++ if (rdev && rdev->supply) ++ return rdev->supply->rdev; ++ ++ return NULL; ++} ++ + /** + * regulator_lock_supply - lock a regulator and its supplies + * @rdev: regulator source +@@ -140,7 +148,7 @@ static void regulator_lock_supply(struct + { + int i; + +- for (i = 0; rdev->supply; rdev = rdev->supply->rdev, i++) ++ for (i = 0; rdev->supply; rdev = rdev_get_supply(rdev), i++) + mutex_lock_nested(&rdev->mutex, i); + } + diff --git a/queue-4.4/s390-cpumf-fix-lpp-detection.patch b/queue-4.4/s390-cpumf-fix-lpp-detection.patch index 2093b5443a7..a4ed71dfd4d 100644 --- a/queue-4.4/s390-cpumf-fix-lpp-detection.patch +++ b/queue-4.4/s390-cpumf-fix-lpp-detection.patch @@ -14,7 +14,6 @@ the "The set-program-parameters facility" might crash on an lpp instruction. Signed-off-by: Christian Borntraeger -Cc: stable@vger.kernel.org # v4.4+ Fixes: e22cf8ca6f75 ("s390/cpumf: rework program parameter setting to detect guest samples") Signed-off-by: Martin Schwidefsky Signed-off-by: Greg Kroah-Hartman diff --git a/queue-4.4/series b/queue-4.4/series index 2f1264918eb..857e9860e37 100644 --- a/queue-4.4/series +++ b/queue-4.4/series @@ -1 +1,3 @@ s390-cpumf-fix-lpp-detection.patch +regulator-core-avoid-unused-variable-warning.patch +regulator-core-fix-nested-locking-of-supplies.patch