mirror of https://gitee.com/openkylin/linux.git
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:
|
* 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;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue