Commit 75db37d2 authored by Steven Rostedt's avatar Steven Rostedt Committed by Steven Rostedt

tracing: add size checks for exported ftrace internal structures

The events exported by TRACE_EVENT are automated and are guaranteed
to be correct when used.

The internal ftrace structures on the other hand are more manually
exported. These require the ftrace maintainer to make sure they
are up to date.

This patch adds a size check to help flag when a type changes in
an internal ftrace data structure, and the update needs to be reflected
in the export.

If a export is incorrect, then the only harm is that the user space
tools will not know how to correctly read the internal structures of
ftrace.

[ Impact: help prevent inconsistent ftrace format print outs ]
Signed-off-by: default avatarSteven Rostedt <srostedt@redhat.com>
parent 89ec0dee
...@@ -381,8 +381,11 @@ event_enable_write(struct file *filp, const char __user *ubuf, size_t cnt, ...@@ -381,8 +381,11 @@ event_enable_write(struct file *filp, const char __user *ubuf, size_t cnt,
return cnt; return cnt;
} }
extern char *__bad_type_size(void);
#undef FIELD #undef FIELD
#define FIELD(type, name) \ #define FIELD(type, name) \
sizeof(type) != sizeof(field.name) ? __bad_type_size() : \
#type, "common_" #name, offsetof(typeof(field), name), \ #type, "common_" #name, offsetof(typeof(field), name), \
sizeof(field.name) sizeof(field.name)
......
...@@ -19,8 +19,12 @@ ...@@ -19,8 +19,12 @@
#undef TRACE_STRUCT #undef TRACE_STRUCT
#define TRACE_STRUCT(args...) args #define TRACE_STRUCT(args...) args
extern void __bad_type_size(void);
#undef TRACE_FIELD #undef TRACE_FIELD
#define TRACE_FIELD(type, item, assign) \ #define TRACE_FIELD(type, item, assign) \
if (sizeof(type) != sizeof(field.item)) \
__bad_type_size(); \
ret = trace_seq_printf(s, "\tfield:" #type " " #item ";\t" \ ret = trace_seq_printf(s, "\tfield:" #type " " #item ";\t" \
"offset:%u;\tsize:%u;\n", \ "offset:%u;\tsize:%u;\n", \
(unsigned int)offsetof(typeof(field), item), \ (unsigned int)offsetof(typeof(field), item), \
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment