Skip to contentSkip to conversation

regulator: core: fix regulator_lock_supply regression

PATCH RESEND In review Arnd Bergmann 2 participants 3 messages Nov 27, 2015 – Dec 1, 2015 Voltage and current regulator framework

lore
Share & tools
lore
#0 lore raw

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.

Fixes 716fec9d1965 ("[SUBMITTED] regulator: core: avoid unused variable warning")

---
rebased on top of regulators.git #for-next

drivers/regulator/core.c +2 -1
index c9bdca5f3b9b..89e4dcb84758 100644
@@ -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);
 }
 
maintainer
#1 lore raw
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:

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>

#2 lore raw
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