ftrace: debug smp_processor_id, use notrace preempt disable
The debug smp_processor_id caused a recursive fault in debugging the irqsoff tracer. The tracer used a smp_processor_id in the ftrace callback, and this function called preempt_disable which also is traced. This caused a recursive fault (stack overload). Since using smp_processor_id without debugging on does not cause faults with the tracer (even when the tracer is wrong), the debug version should not cause a system reboot. This changes the debug_smp_processor_id to use the notrace versions of preempt_disable and enable. Signed-off-by: Steven Rostedt <srostedt@redhat.com> Signed-off-by: Ingo Molnar <mingo@elte.hu> Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
This commit is contained in:
parent
f43fdad862
commit
5568b139f4
|
@ -37,7 +37,7 @@ notrace unsigned int debug_smp_processor_id(void)
|
|||
/*
|
||||
* Avoid recursion:
|
||||
*/
|
||||
preempt_disable();
|
||||
preempt_disable_notrace();
|
||||
|
||||
if (!printk_ratelimit())
|
||||
goto out_enable;
|
||||
|
@ -49,7 +49,7 @@ notrace unsigned int debug_smp_processor_id(void)
|
|||
dump_stack();
|
||||
|
||||
out_enable:
|
||||
preempt_enable_no_resched();
|
||||
preempt_enable_no_resched_notrace();
|
||||
out:
|
||||
return this_cpu;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue