diff options
author | Steven Rostedt <srostedt@redhat.com> | 2008-05-12 21:20:44 +0200 |
---|---|---|
committer | Thomas Gleixner <tglx@linutronix.de> | 2008-05-23 20:39:17 +0200 |
commit | 5568b139f4d196273958ae2947a736fdf1ffeece (patch) | |
tree | 27b9b64c33b970e0d2608324bc615382953fb705 /lib/smp_processor_id.c | |
parent | ftrace: fix kexec (diff) | |
download | linux-5568b139f4d196273958ae2947a736fdf1ffeece.tar.xz linux-5568b139f4d196273958ae2947a736fdf1ffeece.zip |
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>
Diffstat (limited to 'lib/smp_processor_id.c')
-rw-r--r-- | lib/smp_processor_id.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/lib/smp_processor_id.c b/lib/smp_processor_id.c index e555ab62fbad..3b4dc098181e 100644 --- a/lib/smp_processor_id.c +++ b/lib/smp_processor_id.c @@ -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; } |