sched/core: Allow try_invoke_on_locked_down_task() with irqs disabled
authorPeter Zijlstra <peterz@infradead.org>
Sat, 29 Aug 2020 17:22:24 +0000 (10:22 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sun, 7 Mar 2021 11:34:04 +0000 (12:34 +0100)
commit6816509065b9d895a287ec01d3da81a6904b1467
treef879879aeb6f6db950543a77dc04dd9e8157a8c7
parent40f6090d6ea0ba33c76942e5b7d5dbbc406f1465
sched/core: Allow try_invoke_on_locked_down_task() with irqs disabled

commit 1b7af295541d75535374325fd617944534853919 upstream.

The try_invoke_on_locked_down_task() function currently requires
that interrupts be enabled, but it is called with interrupts
disabled from rcu_print_task_stall(), resulting in an "IRQs not
enabled as expected" diagnostic.  This commit therefore updates
try_invoke_on_locked_down_task() to use raw_spin_lock_irqsave() instead
of raw_spin_lock_irq(), thus allowing use from either context.

Link: https://lore.kernel.org/lkml/000000000000903d5805ab908fc4@google.com/
Link: https://lore.kernel.org/lkml/20200928075729.GC2611@hirez.programming.kicks-ass.net/
Reported-by: syzbot+cb3b69ae80afd6535b0e@syzkaller.appspotmail.com
Signed-off-by: Peter Zijlstra <peterz@infradead.org>
Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
kernel/sched/core.c