kernel-hacking-2024-linux-s.../kernel/trace
Steven Rostedt c29f122cd7 ftrace: Add context level recursion bit checking
Currently for recursion checking in the function tracer, ftrace
tests a task_struct bit to determine if the function tracer had
recursed or not. If it has, then it will will return without going
further.

But this leads to races. If an interrupt came in after the bit
was set, the functions being traced would see that bit set and
think that the function tracer recursed on itself, and would return.

Instead add a bit for each context (normal, softirq, irq and nmi).

A check of which context the task is in is made before testing the
associated bit. Now if an interrupt preempts the function tracer
after the previous context has been set, the interrupt functions
can still be traced.

Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
2013-01-22 23:38:00 -05:00
..
blktrace.c tracing: Use this_cpu_ptr per-cpu helper 2013-01-21 13:22:30 -05:00
ftrace.c ftrace: Add context level recursion bit checking 2013-01-22 23:38:00 -05:00
Kconfig ftrace: Move ARCH_SUPPORTS_FTRACE_SAVE_REGS in Kconfig 2013-01-21 13:22:35 -05:00
Makefile trace: Stop compiling in trace_clock unconditionally 2012-09-13 22:52:08 -04:00
power-traces.c
ring_buffer.c ring-buffer: Remove unnecessary recusive call in rb_advance_iter() 2013-01-21 13:22:29 -05:00
ring_buffer_benchmark.c
rpm-traces.c
trace.c tracing: Fix race with max_tr and changing tracers 2013-01-22 23:33:07 -05:00
trace.h ftrace: Add context level recursion bit checking 2013-01-22 23:38:00 -05:00
trace_branch.c tracing: Cache comms only after an event occurred 2012-10-31 16:45:31 -04:00
trace_clock.c tracing: Remove trace.h header from trace_clock.c 2013-01-22 12:06:56 -05:00
trace_entries.h
trace_event_perf.c
trace_events.c tracing: Remove the extra 4 bytes of padding in events 2013-01-21 21:05:41 -05:00
trace_events_filter.c tracing: Replace strict_strto* with kstrto* 2012-10-31 16:45:23 -04:00
trace_events_filter_test.h
trace_export.c
trace_functions.c Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial 2012-12-13 12:00:02 -08:00
trace_functions_graph.c tracing/fgraph: Add max_graph_depth to limit function_graph depth 2013-01-21 13:22:34 -05:00
trace_irqsoff.c Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial 2012-12-13 12:00:02 -08:00
trace_kdb.c
trace_kprobe.c tracing: Use irq_work for wake ups and remove *_nowake_*() functions 2012-11-02 10:21:52 -04:00
trace_mmiotrace.c
trace_nop.c
trace_output.c tracing: Format non-nanosec times from tsc clock without a decimal point. 2012-11-13 15:48:40 -05:00
trace_output.h
trace_printk.c
trace_probe.c tracing: Replace strict_strto* with kstrto* 2012-10-31 16:45:23 -04:00
trace_probe.h
trace_sched_switch.c tracing: Use irq_work for wake ups and remove *_nowake_*() functions 2012-11-02 10:21:52 -04:00
trace_sched_wakeup.c Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial 2012-12-13 12:00:02 -08:00
trace_selftest.c ftrace: Fix function tracing recursion self test 2013-01-22 23:37:58 -05:00
trace_selftest_dynamic.c
trace_stack.c tracing: Remove unneeded checks from the stack tracer 2012-11-19 15:07:13 -05:00
trace_stat.c
trace_stat.h
trace_syscalls.c tracing/syscalls: Make local functions static 2013-01-21 13:22:31 -05:00
trace_uprobe.c tracing: Verify target file before registering a uprobe event 2013-01-21 13:22:31 -05:00