tumblrから移動
こういう流れか。__run_timers()がinline展開されるからrun_timer_softirq()の0x14bバイト目が分かり辛かったけど。
run_timer_softirq() --> __run_timers() --> call_timer_fn() --> rts51x_suspend_timer_fn() --> usb_autopm_put_interface() --> pm_runtime_put_sync() --> __pm_runtime_idle() --> __might_sleep()
↓のトレース
[ 84.266842] BUG: sleeping function called from invalid context at drivers/bas e/power/runtime.c:785 [ 84.266850] in_atomic(): 1, irqs_disabled(): 0, pid: 77, name: kmemleak [ 84.266855] 2 locks held by kmemleak/77: [ 84.266858] #0: (scan_mutex){......}, at: [] kmemleak_sca n_thread+0x61/0xaa [ 84.266873] #1: (&chip->rts51x_suspend_timer){......}, at: [] run_timer_softirq+0x14b/0x2e6 [ 84.266887] Pid: 77, comm: kmemleak Not tainted 3.2.0test #25 [ 84.266890] Call Trace: [ 84.266893] [] __might_sleep+0xf6/0xfb [ 84.266906] [] __pm_runtime_idle+0x3c/0x95 [ 84.266914] [] usb_autopm_put_interface+0x3a/0x3e [ 84.266923] [] rts51x_suspend_timer_fn+0x62/0x64 [ums_real tek] [ 84.266929] [] run_timer_softirq+0x1d4/0x2e6