Skip to content

Commit

Permalink
ftrace: Fix preemption accounting for stacktrace filter command
Browse files Browse the repository at this point in the history
commit 11aff32 upstream.

The preemption count of the stacktrace filter command to trace ksys_read
is consistently incorrect:

$ echo ksys_read:stacktrace > set_ftrace_filter

   <...>-453     [004] ...1.    38.308956: <stack trace>
=> ksys_read
=> do_syscall_64
=> entry_SYSCALL_64_after_hwframe

The root cause is that the trace framework disables preemption when
invoking the filter command callback in function_trace_probe_call:

   preempt_disable_notrace();
   probe_ops->func(ip, parent_ip, probe_opsbe->tr, probe_ops, probe->data);
   preempt_enable_notrace();

Use tracing_gen_ctx_dec() to account for the preempt_disable_notrace(),
which will output the correct preemption count:

$ echo ksys_read:stacktrace > set_ftrace_filter

   <...>-410     [006] .....    31.420396: <stack trace>
=> ksys_read
=> do_syscall_64
=> entry_SYSCALL_64_after_hwframe

Cc: stable@vger.kernel.org
Fixes: 36590c5 ("tracing: Merge irqflags + preempt counter.")
Link: https://lore.kernel.org/20250512094246.1167956-2-dolinux.peng@gmail.com
Signed-off-by: pengdonglin <dolinux.peng@gmail.com>
Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  • Loading branch information
pengdonglin authored and Greg Kroah-Hartman committed May 22, 2025
1 parent deea40f commit 560877a
Showing 1 changed file with 1 addition and 5 deletions.
6 changes: 1 addition & 5 deletions kernel/trace/trace_functions.c
Original file line number Diff line number Diff line change
Expand Up @@ -568,11 +568,7 @@ ftrace_traceoff(unsigned long ip, unsigned long parent_ip,

static __always_inline void trace_stack(struct trace_array *tr)
{
unsigned int trace_ctx;

trace_ctx = tracing_gen_ctx();

__trace_stack(tr, trace_ctx, FTRACE_STACK_SKIP);
__trace_stack(tr, tracing_gen_ctx_dec(), FTRACE_STACK_SKIP);
}

static void
Expand Down

0 comments on commit 560877a

Please sign in to comment.