linux/kernel/trace
Linus Torvalds e30dd219c7 Fixes for ftrace in v6.13:
- Add needed READ_ONCE() around access to the fgraph array element
 
   The updates to the fgraph array can happen when callbacks are registered
   and unregistered. The __ftrace_return_to_handler() can handle reading
   either the old value or the new value. But once it reads that value
   it must stay consistent otherwise the check that looks to see if the
   value is a stub may show false, but if the compiler decides to re-read
   after that check, it can be true which can cause the code to crash
   later on.
 
 - Make function profiler use the top level ops for filtering again
 
   When function graph became available for instances, its filter ops became
   independent from the top level set_ftrace_filter. In the process the
   function profiler received its own filter ops as well. But the function
   profiler uses the top level set_ftrace_filter file and does not have one
   of its own. In giving it its own filter ops, it lost any user interface
   it once had. Make it use the top level set_ftrace_filter file again.
   This fixes a regression.
 -----BEGIN PGP SIGNATURE-----
 
 iIoEABYIADIWIQRRSw7ePDh/lE+zeZMp5XQQmuv6qgUCZ3cR4RQccm9zdGVkdEBn
 b29kbWlzLm9yZwAKCRAp5XQQmuv6qjxfAQCPhNztdmGmEYmuBtONPHwejidWnuJ6
 Rl2mQxEbp40OUgD+JvSWofhRsvtXWlymqZ9j+dKMegLqMeq834hB0LK4NAg=
 =+KqV
 -----END PGP SIGNATURE-----

Merge tag 'ftrace-v6.13-rc5-2' of git://git.kernel.org/pub/scm/linux/kernel/git/trace/linux-trace

Pull ftrace fixes from Steven Rostedt:

 - Add needed READ_ONCE() around access to the fgraph array element

   The updates to the fgraph array can happen when callbacks are
   registered and unregistered. The __ftrace_return_to_handler() can
   handle reading either the old value or the new value. But once it
   reads that value it must stay consistent otherwise the check that
   looks to see if the value is a stub may show false, but if the
   compiler decides to re-read after that check, it can be true which
   can cause the code to crash later on.

 - Make function profiler use the top level ops for filtering again

   When function graph became available for instances, its filter ops
   became independent from the top level set_ftrace_filter. In the
   process the function profiler received its own filter ops as well.
   But the function profiler uses the top level set_ftrace_filter file
   and does not have one of its own. In giving it its own filter ops, it
   lost any user interface it once had. Make it use the top level
   set_ftrace_filter file again. This fixes a regression.

* tag 'ftrace-v6.13-rc5-2' of git://git.kernel.org/pub/scm/linux/kernel/git/trace/linux-trace:
  ftrace: Fix function profiler's filtering functionality
  fgraph: Add READ_ONCE() when accessing fgraph_array[]
2025-01-03 10:04:43 -08:00
..
rv rv: Fix a typo 2024-10-04 19:09:23 -04:00
Kconfig function_graph: Support recording and printing the function return address 2024-10-05 10:14:04 -04:00
Makefile
blktrace.c
bpf_trace.c bpf,perf: Fix invalid prog_array access in perf_event_detach_bpf_prog 2024-12-10 10:16:28 -08:00
bpf_trace.h
error_report-traces.c
fgraph.c fgraph: Add READ_ONCE() when accessing fgraph_array[] 2025-01-02 17:21:18 -05:00
fprobe.c
ftrace.c ftrace: Fix function profiler's filtering functionality 2025-01-02 17:21:33 -05:00
ftrace_internal.h
kprobe_event_gen_test.c
pid_list.c
pid_list.h
power-traces.c
preemptirq_delay_test.c minmax: make generic MIN() and MAX() macros available everywhere 2024-07-28 15:49:18 -07:00
rethook.c
ring_buffer.c ring-buffer: Fix overflow in __rb_map_vma 2024-12-18 14:15:10 -05:00
ring_buffer_benchmark.c ring-buffer: Use str_low_high() helper in ring_buffer_producer() 2024-10-19 11:12:25 -04:00
rpm-traces.c
synth_event_gen_test.c
trace.c tracing: Prevent bad count for tracing_cpumask_write 2024-12-23 21:59:15 -05:00
trace.h tracing: Check "%s" dereference via the field and not the TP_printk format 2024-12-17 11:40:11 -05:00
trace_benchmark.c
trace_benchmark.h
trace_boot.c
trace_branch.c tracing: Remove TRACE_EVENT_FL_FILTERED logic 2024-10-08 15:24:49 -04:00
trace_btf.c
trace_btf.h
trace_clock.c tracing: Use atomic64_inc_return() in trace_clock_counter() 2024-10-09 19:59:49 -04:00
trace_dynevent.c
trace_dynevent.h
trace_entries.h function_graph: Support recording and printing the function return address 2024-10-05 10:14:04 -04:00
trace_eprobe.c tracing/eprobe: Fix to release eprobe when failed to add dyn_event 2024-12-08 23:25:09 +09:00
trace_event_perf.c trace/trace_event_perf: remove duplicate samples on the first tracepoint event 2024-10-09 19:44:54 -04:00
trace_events.c tracing: Have process_string() also allow arrays 2024-12-31 00:10:32 -05:00
trace_events_filter.c tracing: Replace multiple deprecated strncpy with memcpy 2024-10-30 19:41:08 -04:00
trace_events_filter_test.h
trace_events_hist.c tracing: Remove redundant check on field->field in histograms 2024-11-12 11:36:57 -05:00
trace_events_inject.c tracing: Have format file honor EVENT_FILE_FL_FREED 2024-08-07 18:12:46 -04:00
trace_events_synth.c
trace_events_trigger.c tracing: Have format file honor EVENT_FILE_FL_FREED 2024-08-07 18:12:46 -04:00
trace_events_user.c tracepoints: Use new static branch API 2024-10-08 21:17:39 -04:00
trace_export.c
trace_fprobe.c tracing/probes: Fix MAX_TRACE_ARGS limit handling 2024-10-23 17:24:44 +09:00
trace_functions.c ftrace: Do not find "true_parent" if HAVE_DYNAMIC_FTRACE_WITH_ARGS is not set 2024-12-16 17:22:26 -05:00
trace_functions_graph.c tracing updates for v6.13: 2024-11-22 13:27:01 -08:00
trace_hwlat.c tracing: Remove TRACE_EVENT_FL_FILTERED logic 2024-10-08 15:24:49 -04:00
trace_irqsoff.c fgraph: Simplify return address printing in function graph tracer 2024-10-10 14:06:26 -04:00
trace_kdb.c trace: kdb: Replace simple_strtoul with kstrtoul in kdb_ftdump 2024-11-02 08:33:13 +00:00
trace_kprobe.c tracing/kprobe: Make trace_kprobe's module callback called after jump_label update 2024-12-24 00:08:13 +09:00
trace_kprobe_selftest.c
trace_kprobe_selftest.h
trace_mmiotrace.c tracing: Remove TRACE_EVENT_FL_FILTERED logic 2024-10-08 15:24:49 -04:00
trace_nop.c
trace_osnoise.c tracing: Remove TRACE_EVENT_FL_FILTERED logic 2024-10-08 15:24:49 -04:00
trace_output.c tracing: Check "%s" dereference via the field and not the TP_printk format 2024-12-17 11:40:11 -05:00
trace_output.h
trace_preemptirq.c tracing: Fix archs that still call tracepoints without RCU watching 2024-12-05 09:28:58 -05:00
trace_printk.c
trace_probe.c tracing: Consider the NULL character when validating the event length 2024-10-23 17:24:47 +09:00
trace_probe.h
trace_probe_kernel.h
trace_probe_tmpl.h
trace_recursion_record.c
trace_sched_switch.c tracing: Replace strncpy() with strscpy() when copying comm 2024-11-01 14:37:31 -04:00
trace_sched_wakeup.c fgraph: Simplify return address printing in function graph tracer 2024-10-10 14:06:26 -04:00
trace_selftest.c ftrace updates for v6.13: 2024-11-20 11:34:10 -08:00
trace_selftest_dynamic.c
trace_seq.c
trace_stack.c
trace_stat.c
trace_stat.h
trace_synth.h
trace_syscalls.c tracing/perf: Add might_fault check to syscall probes 2024-10-09 17:09:46 -04:00
trace_uprobe.c bpf: Fix theoretical prog_array UAF in __uprobe_perf_func() 2024-12-10 13:06:51 -08:00
tracing_map.c tracing: Fix cmp_entries_dup() to respect sort() comparison rules 2024-12-04 10:38:24 -05:00
tracing_map.h