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:
Steven Rostedt 2008-05-12 21:20:44 +02:00 committed by Thomas Gleixner
parent f43fdad862
commit 5568b139f4

View File

@ -37,7 +37,7 @@ notrace unsigned int debug_smp_processor_id(void)
/* /*
* Avoid recursion: * Avoid recursion:
*/ */
preempt_disable(); preempt_disable_notrace();
if (!printk_ratelimit()) if (!printk_ratelimit())
goto out_enable; goto out_enable;
@ -49,7 +49,7 @@ notrace unsigned int debug_smp_processor_id(void)
dump_stack(); dump_stack();
out_enable: out_enable:
preempt_enable_no_resched(); preempt_enable_no_resched_notrace();
out: out:
return this_cpu; return this_cpu;
} }