kernel_optimize_test/kernel/trace
Steven Rostedt (VMware) b40341fad6 ftrace: Move RCU is watching check after recursion check
The first thing that the ftrace function callback helper functions should do
is to check for recursion. Peter Zijlstra found that when
"rcu_is_watching()" had its notrace removed, it caused perf function tracing
to crash. This is because the call of rcu_is_watching() is tested before
function recursion is checked and and if it is traced, it will cause an
infinite recursion loop.

rcu_is_watching() should still stay notrace, but to prevent this should
never had crashed in the first place. The recursion prevention must be the
first thing done in callback functions.

Link: https://lore.kernel.org/r/20200929112541.GM2628@hirez.programming.kicks-ass.net

Cc: stable@vger.kernel.org
Cc: Paul McKenney <paulmck@kernel.org>
Fixes: c68c0fa293 ("ftrace: Have ftrace_ops_get_func() handle RCU and PER_CPU flags too")
Acked-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Reported-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
2020-09-29 13:05:10 -04:00
..
blktrace.c treewide: Use fallthrough pseudo-keyword 2020-08-23 17:36:59 -05:00
bpf_trace.c bpf: Remove inline from bpf_do_trace_printk 2020-08-06 16:53:17 -07:00
bpf_trace.h bpf: Use dedicated bpf_trace_printk event instead of trace_printk() 2020-07-13 16:55:49 -07:00
fgraph.c
ftrace_internal.h
ftrace.c ftrace: Move RCU is watching check after recursion check 2020-09-29 13:05:10 -04:00
Kconfig
kprobe_event_gen_test.c
Makefile Kbuild updates for v5.9 2020-08-09 14:10:26 -07:00
power-traces.c
preemptirq_delay_test.c
ring_buffer_benchmark.c sched,tracing: Convert to sched_set_fifo() 2020-07-29 11:43:53 +02:00
ring_buffer.c Tracing updates for 5.9 2020-08-07 18:29:15 -07:00
rpm-traces.c
synth_event_gen_test.c
trace_benchmark.c
trace_benchmark.h
trace_boot.c
trace_branch.c
trace_clock.c
trace_dynevent.c
trace_dynevent.h
trace_entries.h
trace_event_perf.c
trace_events_filter_test.h
trace_events_filter.c treewide: Use fallthrough pseudo-keyword 2020-08-23 17:36:59 -05:00
trace_events_hist.c tracing: fix double free 2020-09-18 13:16:40 -04:00
trace_events_inject.c
trace_events_synth.c
trace_events_trigger.c
trace_events.c tracing: Use trace_sched_process_free() instead of exit() for pid tracing 2020-08-04 20:15:07 -04:00
trace_export.c
trace_functions_graph.c
trace_functions.c
trace_hwlat.c tracing/hwlat: Honor the tracing_cpumask 2020-07-30 19:35:04 -04:00
trace_irqsoff.c
trace_kdb.c
trace_kprobe_selftest.c
trace_kprobe_selftest.h
trace_kprobe.c
trace_mmiotrace.c
trace_nop.c
trace_output.c tracing: Make the space reserved for the pid wider 2020-09-18 12:42:11 -04:00
trace_output.h
trace_preemptirq.c
trace_printk.c
trace_probe_tmpl.h
trace_probe.c
trace_probe.h
trace_sched_switch.c
trace_sched_wakeup.c
trace_selftest_dynamic.c
trace_selftest.c
trace_seq.c
trace_stack.c
trace_stat.c
trace_stat.h
trace_synth.h
trace_syscalls.c
trace_uprobe.c tracing/uprobe: Remove dead code in trace_uprobe_register() 2020-08-03 16:16:46 -04:00
trace.c tracing: Fix trace_find_next_entry() accounting of temp buffer size 2020-09-29 12:46:22 -04:00
trace.h ftrace: Fix ftrace_trace_task return value 2020-08-03 16:12:31 -04:00
tracing_map.c
tracing_map.h