• Martin Schwidefsky's avatar
    clocksource: Resume clocksource without taking the clocksource mutex · 89133f93
    Martin Schwidefsky authored
    git commit 75c5158f converted the clocksource spinlock to a
    mutex. This causes the following BUG:
    
    BUG: sleeping function called from invalid context at
    kernel/mutex.c:280 in_atomic(): 0, irqs_disabled(): 1, pid: 2473,
    name: pm-suspend 2 locks held by pm-suspend/2473:
     #0:  (&buffer->mutex){......}, at: [<ffffffff8115ab13>]
    sysfs_write_file+0x3c/0x137
     #1:  (pm_mutex){......}, at: [<ffffffff810865b5>]
    enter_state+0x39/0x130 Pid: 2473, comm: pm-suspend Not tainted 2.6.31
    #1
    
     Call Trace:
     [<ffffffff810792f0>] ? __debug_show_held_locks+0x22/0x24
     [<ffffffff8104a2ef>] __might_sleep+0x107/0x10b
     [<ffffffff8141fca9>] mutex_lock_nested+0x25/0x43
     [<ffffffff81073537>] clocksource_resume+0x1c/0x60
     [<ffffffff81072902>] timekeeping_resume+0x1e/0x1c8
     [<ffffffff812aee62>] __sysdev_resume+0x25/0xcf
     [<ffffffff812aef79>] sysdev_resume+0x6d/0xae
     [<ffffffff810864f8>] suspend_devices_and_enter+0x12b/0x1af
     [<ffffffff8108665b>] enter_state+0xdf/0x130
     [<ffffffff81085dc3>] state_store+0xb6/0xd3
     [<ffffffff81204c73>] kobj_attr_store+0x17/0x19
     [<ffffffff8115abd2>] sysfs_write_file+0xfb/0x137
     [<ffffffff811057d2>] vfs_write+0xae/0x10b
     [<ffffffff81208392>] ? __up_read+0x1a/0x7f
     [<ffffffff811058ef>] sys_write+0x4a/0x6e
     [<ffffffff81011b82>] system_call_fastpath+0x16/0x1b
    
    clocksource_resume is called early in the resume process, there is
    only one cpu, no processes are running and the interrupts are
    disabled. It is therefore possible to resume the clocksources
    without taking the clocksource mutex.
    Reported-by: default avatarXiaotian Feng <xtfeng@gmail.com>
    Signed-off-by: default avatarMartin Schwidefsky <schwidefsky@de.ibm.com>
    Tested-by: Michal Schmidt's avatarMichal Schmidt <mschmidt@redhat.com>
    Cc: Xiaotian Feng <xtfeng@gmail.com>
    Cc: John Stultz <johnstul@us.ibm.com>
    LKML-Reference: <20090924172952.49697825@mschwide.boeblingen.de.ibm.com>
    Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
    89133f93
clocksource.c 19.1 KB