Skip to content

Commit 4bec284

Browse files
committed
tracing/user_events: Use print_format_fields() for trace output
Currently, user events are shown using the "hex" output for "safety" reasons as one cannot trust user events behaving nicely. But the hex output is not the only utility for safe outputting of trace events. The print_event_fields() is just as safe and gives user readable output. Before: example-839 [001] ..... 43.222244: 00000000: b1 06 00 00 47 03 00 00 00 00 00 00 ....G....... example-839 [001] ..... 43.564433: 00000000: b1 06 00 00 47 03 00 00 01 00 00 00 ....G....... example-839 [001] ..... 43.763917: 00000000: b1 06 00 00 47 03 00 00 02 00 00 00 ....G....... example-839 [001] ..... 43.967929: 00000000: b1 06 00 00 47 03 00 00 03 00 00 00 ....G....... After: example-837 [006] ..... 55.739249: test: count=0x0 (0) example-837 [006] ..... 111.104784: test: count=0x1 (1) example-837 [006] ..... 111.268444: test: count=0x2 (2) example-837 [006] ..... 111.416533: test: count=0x3 (3) example-837 [006] ..... 111.542859: test: count=0x4 (4) Link: https://lore.kernel.org/linux-trace-kernel/20230328151413.4770b8d7@gandalf.local.home Cc: Masami Hiramatsu <mhiramat@kernel.org> Cc: Mark Rutland <mark.rutland@arm.com> Cc: Beau Belgrave <beaub@linux.microsoft.com> Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
1 parent a4c40c1 commit 4bec284

1 file changed

Lines changed: 3 additions & 6 deletions

File tree

kernel/trace/trace_events_user.c

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,9 @@
2222
#include <linux/highmem.h>
2323
#include <linux/init.h>
2424
#include <linux/user_events.h>
25-
#include "trace.h"
2625
#include "trace_dynevent.h"
26+
#include "trace_output.h"
27+
#include "trace.h"
2728

2829
#define USER_EVENTS_PREFIX_LEN (sizeof(USER_EVENTS_PREFIX)-1)
2930

@@ -1198,11 +1199,7 @@ static enum print_line_t user_event_print_trace(struct trace_iterator *iter,
11981199
int flags,
11991200
struct trace_event *event)
12001201
{
1201-
/* Unsafe to try to decode user provided print_fmt, use hex */
1202-
trace_print_hex_dump_seq(&iter->seq, "", DUMP_PREFIX_OFFSET, 16,
1203-
1, iter->ent, iter->ent_size, true);
1204-
1205-
return trace_handle_return(&iter->seq);
1202+
return print_event_fields(iter, event);
12061203
}
12071204

12081205
static struct trace_event_functions user_event_funcs = {

0 commit comments

Comments
 (0)