提交 3a9f84d3 编写于 作者: E Ed Swierk 提交者: Ingo Molnar

signals, debug: fix BUG: using smp_processor_id() in preemptible code in print_fatal_signal()

With print-fatal-signals=1 on a kernel with CONFIG_PREEMPT=y, sending an
unexpected signal to a process causes a BUG: using smp_processor_id() in
preemptible code.

get_signal_to_deliver() releases the siglock before calling
print_fatal_signal(), which calls show_regs(), which calls
smp_processor_id(), which is not supposed to be called from a
preemptible thread.

Make sure show_regs() runs with preemption disabled.
Signed-off-by: NEd Swierk <eswierk@aristanetworks.com>
Signed-off-by: NIngo Molnar <mingo@elte.hu>
上级 bf50c903
...@@ -909,7 +909,9 @@ static void print_fatal_signal(struct pt_regs *regs, int signr) ...@@ -909,7 +909,9 @@ static void print_fatal_signal(struct pt_regs *regs, int signr)
} }
#endif #endif
printk("\n"); printk("\n");
preempt_disable();
show_regs(regs); show_regs(regs);
preempt_enable();
} }
static int __init setup_print_fatal_signals(char *str) static int __init setup_print_fatal_signals(char *str)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册