aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/trace/trace.h
diff options
context:
space:
mode:
authorSven Schnelle <svens@linux.ibm.com>2023-08-16 17:49:26 +0200
committerSteven Rostedt (Google) <rostedt@goodmis.org>2023-08-16 16:33:27 -0400
commitddeea494a16f32522bce16ee65f191d05d4b8282 (patch)
tree2de190925a4e1eb0b4cac6bc6d9f7746f74f8fca /kernel/trace/trace.h
parentselftests/ftrace: Add a basic testcase for snapshot (diff)
downloadlinux-ddeea494a16f32522bce16ee65f191d05d4b8282.tar.gz
linux-ddeea494a16f32522bce16ee65f191d05d4b8282.zip
tracing/synthetic: Use union instead of casts
The current code uses a lot of casts to access the fields member in struct synth_trace_events with different sizes. This makes the code hard to read, and had already introduced an endianness bug. Use a union and struct instead. Link: https://lkml.kernel.org/r/20230816154928.4171614-2-svens@linux.ibm.com Cc: stable@vger.kernel.org Cc: Masami Hiramatsu <mhiramat@kernel.org> Fixes: 00cf3d672a9dd ("tracing: Allow synthetic events to pass around stacktraces") Signed-off-by: Sven Schnelle <svens@linux.ibm.com> Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
Diffstat (limited to 'kernel/trace/trace.h')
-rw-r--r--kernel/trace/trace.h8
1 files changed, 8 insertions, 0 deletions
diff --git a/kernel/trace/trace.h b/kernel/trace/trace.h
index e1edc2197fc8..95956f75bea5 100644
--- a/kernel/trace/trace.h
+++ b/kernel/trace/trace.h
@@ -1295,6 +1295,14 @@ static inline void trace_branch_disable(void)
/* set ring buffers to default size if not already done so */
int tracing_update_buffers(void);
+union trace_synth_field {
+ u8 as_u8;
+ u16 as_u16;
+ u32 as_u32;
+ u64 as_u64;
+ struct trace_dynamic_info as_dynamic;
+};
+
struct ftrace_event_field {
struct list_head link;
const char *name;