diff options
| author | David Carlier <devnexen@gmail.com> | 2026-08-06 22:52:56 +0100 |
|---|---|---|
| committer | Steven Rostedt <rostedt@goodmis.org> | 2026-08-11 10:20:19 -0400 |
| commit | 0456323ddd676446ac79aacd69c3443e64197843 (patch) | |
| tree | aadf0ceb67f7974fd7f19f88ae580f1db0447cab | |
| parent | faa0e9064a16b8a9bfac63139b0d8cd18946f247 (diff) | |
tracing: Report every TP_printk double dereference
WARN_ONCE() splats once per call site, so only the first offending event
registered is ever reported. The tree currently has six:
ice_{rx,tx}_dim_template, two hfi1 txq events, mtu3_ep and edma_log_io.
Whichever registers first hides the rest, and each has to be found again
on the next boot.
Add a pr_warn() next to the WARN_ONCE() so every offender is listed, the
same way test_event_printk() already pairs WARN_ON_ONCE() with pr_warn()
for unsafe %p* dereferences. The WARN_ONCE() stays so the condition still
fails tests and panics under panic_on_warn.
Link: https://patch.msgid.link/20260806215256.1680267-1-devnexen@gmail.com
Suggested-by: Steven Rostedt <rostedt@goodmis.org>
Signed-off-by: David Carlier <devnexen@gmail.com>
Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
| -rw-r--r-- | kernel/trace/trace_events.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/kernel/trace/trace_events.c b/kernel/trace/trace_events.c index a8590d2394e3..ce902482ec7c 100644 --- a/kernel/trace/trace_events.c +++ b/kernel/trace/trace_events.c @@ -415,6 +415,8 @@ static void test_double_dereference(const char *str, int len, ptr += 5; for (; ptr < end; ptr++) { if (ptr[0] == '-' && ptr[1] == '>') { + pr_warn("TRACE EVENT ERROR: Event %s has double dereference in TP_printk: %.*s\n", + trace_event_name(call), len, str); WARN_ONCE(1, "Event %s has double dereference in TP_printk: %.*s\n", trace_event_name(call), len, str); return; |
