regulator: core: fix regulator_lock_supply regression
PATCH RESEND 1/1 regulator: core: fix regulator_lock_supply regression
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.
---
rebased on top of regulators.git #for-next
drivers/regulator/core.c +2 -1
@@ -140,7 +140,8 @@ static void regulator_lock_supply(struct regulator_dev *rdev) {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); }
Mark Brown
maintainerQuoted 2 lines · Arnd Bergmann
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:
I'm going to drop both this and the commit it's fixing for now as this is causing boot failures on several boards (none of which I have sadly) in -next:
http://kernelci.org/boot/all/job/broonie-regulator/kernel/v4.4-rc3-17-ga6498dba8869/
which were bisected by Tyler to this:
http://hastebin.com/noluripepa.sm
I'm not seeing anything obvious in the code at the minute having looked
for several seconds, I'll have a proper look later today all being well.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 473 bytes
Desc: not available
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20151201/9be2276e/attachment.sig>
Quoted 8 lines · On Tuesday 01 December 2015 13:16:39 Mark Brown wrote:
Quoted 2 lines · Arnd Bergmann
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:I'm going to drop both this and the commit it's fixing for now as this is causing boot failures on several boards (none of which I have sadly) in -next:
Quoted 9 lines
http://kernelci.org/boot/all/job/broonie-regulator/kernel/v4.4-rc3-17-ga6498dba8869/
which were bisected by Tyler to this:
http://hastebin.com/noluripepa.sm
I'm not seeing anything obvious in the code at the minute having looked for several seconds, I'll have a proper look later today all being well.
Ok, sorry about the double screwup and thanks for looking into it.
Arnd