Commit 5568b139f4d196273958ae2947a736fdf1ffeece

Authored by Steven Rostedt
Committed by Thomas Gleixner
1 parent f43fdad862

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>

Showing 1 changed file with 2 additions and 2 deletions Side-by-side Diff

lib/smp_processor_id.c
... ... @@ -37,7 +37,7 @@
37 37 /*
38 38 * Avoid recursion:
39 39 */
40   - preempt_disable();
  40 + preempt_disable_notrace();
41 41  
42 42 if (!printk_ratelimit())
43 43 goto out_enable;
... ... @@ -49,7 +49,7 @@
49 49 dump_stack();
50 50  
51 51 out_enable:
52   - preempt_enable_no_resched();
  52 + preempt_enable_no_resched_notrace();
53 53 out:
54 54 return this_cpu;
55 55 }