ledtrig-cpu: kill useless mutex to fix sleep in atomic context
authorNathan Lynch <ntl@pobox.com>
Mon, 5 Nov 2012 14:20:31 +0000 (06:20 -0800)
committerBryan Wu <roc@roc-samos.(none)>
Sun, 11 Nov 2012 20:09:43 +0000 (12:09 -0800)
commit0b8728d6f140dc20690384286ade47c956edc999
tree52a1c8a4e0b3b39396f2967e8478acf9464ca0c5
parent77b67063bb6bce6d475e910d3b886a606d0d91f7
ledtrig-cpu: kill useless mutex to fix sleep in atomic context

Seeing the following every time the CPU enters or leaves idle on a
Beagleboard:

BUG: sleeping function called from invalid context at kernel/mutex.c:269
in_atomic(): 1, irqs_disabled(): 0, pid: 0, name: swapper/0
no locks held by swapper/0/0.
[<c001659c>] (unwind_backtrace+0x0/0xf8) from [<c05aaa7c>] (mutex_lock_nested+0x24/0x380)
[<c05aaa7c>] (mutex_lock_nested+0x24/0x380) from [<c043bd1c>] (ledtrig_cpu+0x38/0x88)
[<c043bd1c>] (ledtrig_cpu+0x38/0x88) from [<c000f4b0>] (cpu_idle+0xf4/0x120)
[<c000f4b0>] (cpu_idle+0xf4/0x120) from [<c07e47c8>] (start_kernel+0x2bc/0x30c)

Miles Lane has reported seeing similar splats during system suspend.

The mutex in struct led_trigger_cpu appears to have no function: it
resides in a per-cpu data structure which never changes after the
trigger is registered.  So just remove it.

Reported-by: Miles Lane <miles.lane@gmail.com>
Signed-off-by: Nathan Lynch <ntl@pobox.com>
Signed-off-by: Bryan Wu <roc@roc-samos.(none)>
drivers/leds/ledtrig-cpu.c