]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
tracing: perf: Have perf tracepoint callbacks always disable preemption
authorSteven Rostedt <rostedt@goodmis.org>
Mon, 26 Jan 2026 23:11:46 +0000 (18:11 -0500)
committerSteven Rostedt (Google) <rostedt@goodmis.org>
Fri, 30 Jan 2026 15:43:35 +0000 (10:43 -0500)
In preparation to convert protection of tracepoints from being protected
by a preempt disabled section to being protected by SRCU, have all the
perf callbacks disable preemption as perf expects preemption to be
disabled when processing tracepoints.

While at it, convert the perf system call callback preempt_disable() to a
guard(preempt).

Link: https://lore.kernel.org/all/20250613152218.1924093-1-bigeasy@linutronix.de/
Link: https://patch.msgid.link/20260108220550.2f6638f3@fedora
Cc: Masami Hiramatsu <mhiramat@kernel.org>
Cc: Mark Rutland <mark.rutland@arm.com>
Cc: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: "Paul E. McKenney" <paulmck@kernel.org>
Cc: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Cc: Alexei Starovoitov <ast@kernel.org>
Link: https://patch.msgid.link/20260126231256.174621257@kernel.org
Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
include/trace/perf.h

index a1754b73a8f55b1cfe828a6a741ab32eea39f484..348ad1d9b5566ef6d6719ef2579c126ef9a071e1 100644 (file)
@@ -71,6 +71,7 @@ perf_trace_##call(void *__data, proto)                                        \
        u64 __count __attribute__((unused));                            \
        struct task_struct *__task __attribute__((unused));             \
                                                                        \
+       guard(preempt_notrace)();                                       \
        do_perf_trace_##call(__data, args);                             \
 }
 
@@ -85,9 +86,8 @@ perf_trace_##call(void *__data, proto)                                        \
        struct task_struct *__task __attribute__((unused));             \
                                                                        \
        might_fault();                                                  \
-       preempt_disable_notrace();                                      \
+       guard(preempt_notrace)();                                       \
        do_perf_trace_##call(__data, args);                             \
-       preempt_enable_notrace();                                       \
 }
 
 /*