]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
tracing: Fix synth event printk format for str fields
authorDouglas Raillard <douglas.raillard@arm.com>
Tue, 25 Mar 2025 16:52:02 +0000 (16:52 +0000)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 10 Apr 2025 12:37:43 +0000 (14:37 +0200)
commit 4d38328eb442dc06aec4350fd9594ffa6488af02 upstream.

The printk format for synth event uses "%.*s" to print string fields,
but then only passes the pointer part as var arg.

Replace %.*s with %s as the C string is guaranteed to be null-terminated.

The output in print fmt should never have been updated as __get_str()
handles the string limit because it can access the length of the string in
the string meta data that is saved in the ring buffer.

Cc: stable@vger.kernel.org
Cc: Masami Hiramatsu <mhiramat@kernel.org>
Cc: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Fixes: 8db4d6bfbbf92 ("tracing: Change synthetic event string format to limit printed length")
Link: https://lore.kernel.org/20250325165202.541088-1-douglas.raillard@arm.com
Signed-off-by: Douglas Raillard <douglas.raillard@arm.com>
Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
kernel/trace/trace_events_synth.c

index 28d15b023ad7ebe240a941d95d27520843eea1b6..1e5c8fd7caeefef1cbe230f255cc9890618e9388 100644 (file)
@@ -312,7 +312,7 @@ static const char *synth_field_fmt(char *type)
        else if (strcmp(type, "gfp_t") == 0)
                fmt = "%x";
        else if (synth_field_is_string(type))
-               fmt = "%.*s";
+               fmt = "%s";
        else if (synth_field_is_stack(type))
                fmt = "%s";