ftrace: only trace preempt off with preempt tracer
When PREEMPT_TRACER and IRQSOFF_TRACER are both configured and irqsoff tracer is running, the preempt_off sections might also be traced. Thanks to Andrew Morton for pointing out my mistake of spin_lock disabling interrupts while he was reviewing ftrace.txt. Seems that my example I used actually hit this bug. Signed-off-by: Steven Rostedt <srostedt@redhat.com> Cc: Linus Torvalds <torvalds@linux-foundation.org> Cc: Andrew Morton <akpm@linux-foundation.org> Cc: Peter Zijlstra <peterz@infradead.org> Signed-off-by: Ingo Molnar <mingo@elte.hu>
This commit is contained in:
parent
e59494f441
commit
1e01cb0c6f
@ -337,12 +337,14 @@ EXPORT_SYMBOL(trace_hardirqs_off_caller);
|
|||||||
#ifdef CONFIG_PREEMPT_TRACER
|
#ifdef CONFIG_PREEMPT_TRACER
|
||||||
void trace_preempt_on(unsigned long a0, unsigned long a1)
|
void trace_preempt_on(unsigned long a0, unsigned long a1)
|
||||||
{
|
{
|
||||||
stop_critical_timing(a0, a1);
|
if (preempt_trace())
|
||||||
|
stop_critical_timing(a0, a1);
|
||||||
}
|
}
|
||||||
|
|
||||||
void trace_preempt_off(unsigned long a0, unsigned long a1)
|
void trace_preempt_off(unsigned long a0, unsigned long a1)
|
||||||
{
|
{
|
||||||
start_critical_timing(a0, a1);
|
if (preempt_trace())
|
||||||
|
start_critical_timing(a0, a1);
|
||||||
}
|
}
|
||||||
#endif /* CONFIG_PREEMPT_TRACER */
|
#endif /* CONFIG_PREEMPT_TRACER */
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user