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 | f43fdad8627fec2d21df92799b254dceb66c9c3c (diff) | |
| download | olio-linux-3.10-5568b139f4d196273958ae2947a736fdf1ffeece.tar.xz olio-linux-3.10-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 e555ab62fba..3b4dc098181 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;  }  |