• Tetsuo Handa's avatar
    profiling: remove profile=sleep support · b88f5538
    Tetsuo Handa authored
    The kernel sleep profile is no longer working due to a recursive locking
    bug introduced by commit 42a20f86 ("sched: Add wrapper for get_wchan()
    to keep task blocked")
    
    Booting with the 'profile=sleep' kernel command line option added or
    executing
    
      # echo -n sleep > /sys/kernel/profiling
    
    after boot causes the system to lock up.
    
    Lockdep reports
    
      kthreadd/3 is trying to acquire lock:
      ffff93ac82e08d58 (&p->pi_lock){....}-{2:2}, at: get_wchan+0x32/0x70
    
      but task is already holding lock:
      ffff93ac82e08d58 (&p->pi_lock){....}-{2:2}, at: try_to_wake_up+0x53/0x370
    
    with the call trace being
    
       lock_acquire+0xc8/0x2f0
       get_wchan+0x32/0x70
       __update_stats_enqueue_sleeper+0x151/0x430
       enqueue_entity+0x4b0/0x520
       enqueue_task_fair+0x92/0x6b0
       ttwu_do_activate+0x73/0x140
       try_to_wake_up+0x213/0x370
       swake_up_locked+0x20/0x50
       complete+0x2f/0x40
       kthread+0xfb/0x180
    
    However, since nobody noticed this regression for more than two years,
    let's remove 'profile=sleep' support based on the assumption that nobody
    needs this functionality.
    
    Fixes: 42a20f86 ("sched: Add wrapper for get_wchan() to keep task blocked")
    Cc: stable@vger.kernel.org # v5.16+
    Signed-off-by: default avatarTetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    b88f5538
stats.c 5.17 KB