]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
tracing: Have syscall trace events show "0x" for values greater than 10
authorSteven Rostedt <rostedt@goodmis.org>
Tue, 23 Sep 2025 13:04:59 +0000 (09:04 -0400)
committerSteven Rostedt (Google) <rostedt@goodmis.org>
Tue, 23 Sep 2025 13:29:29 +0000 (09:29 -0400)
Currently the syscall trace events show each value as hexadecimal, but
without adding "0x" it can be confusing:

   sys_write(fd: 4, buf: 0x55c4a1fa9270, count: 44)

Looks like the above write wrote 44 bytes, when in reality it wrote 68
bytes.

Add a "0x" for all values greater or equal to 10 to remove the ambiguity.
For values less than 10, leave off the "0x" as that just adds noise to the
output.

Also change the iterator to check if "i" is nonzero and print the ", "
delimiter at the start, then adding the logic to the trace_seq_printf() at
the end.

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: Peter Zijlstra <peterz@infradead.org>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Takaya Saeki <takayas@google.com>
Cc: Tom Zanussi <zanussi@kernel.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Ian Rogers <irogers@google.com>
Cc: Douglas Raillard <douglas.raillard@arm.com>
Link: https://lore.kernel.org/20250923130713.764558957@kernel.org
Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
kernel/trace/trace_syscalls.c

index 3a0b65f891300275a030358fb727223210a64db7..0f932b22f9ecb2e6ab31ba1f0a296cfe53ef7404 100644 (file)
@@ -153,14 +153,20 @@ print_syscall_enter(struct trace_iterator *iter, int flags,
                if (trace_seq_has_overflowed(s))
                        goto end;
 
+               if (i)
+                       trace_seq_puts(s, ", ");
+
                /* parameter types */
                if (tr && tr->trace_flags & TRACE_ITER_VERBOSE)
                        trace_seq_printf(s, "%s ", entry->types[i]);
 
                /* parameter values */
-               trace_seq_printf(s, "%s: %lx%s", entry->args[i],
-                                trace->args[i],
-                                i == entry->nb_args - 1 ? "" : ", ");
+               if (trace->args[i] < 10)
+                       trace_seq_printf(s, "%s: %lu", entry->args[i],
+                                        trace->args[i]);
+               else
+                       trace_seq_printf(s, "%s: 0x%lx", entry->args[i],
+                                        trace->args[i]);
        }
 
        trace_seq_putc(s, ')');