Skip to content

Commit fb7ae98

Browse files
Lai Jiangshanrostedt
authored andcommitted
tracing: Fix sign fields in ftrace_define_fields_##call()
Add is_signed_type() call to trace_define_field() in ftrace macros. The code previously just passed in 0 (false), disregarding whether or not the field was actually a signed type. Signed-off-by: Lai Jiangshan <laijs@cn.fujitsu.com> LKML-Reference: <4B273D3A.6020007@cn.fujitsu.com> Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
1 parent e96dc96 commit fb7ae98

2 files changed

Lines changed: 8 additions & 6 deletions

File tree

include/trace/ftrace.h

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -414,16 +414,17 @@ ftrace_raw_output_##call(struct trace_iterator *iter, int flags) \
414414
BUILD_BUG_ON(len > MAX_FILTER_STR_VAL); \
415415
ret = trace_define_field(event_call, #type "[" #len "]", #item, \
416416
offsetof(typeof(field), item), \
417-
sizeof(field.item), 0, FILTER_OTHER); \
417+
sizeof(field.item), \
418+
is_signed_type(type), FILTER_OTHER); \
418419
if (ret) \
419420
return ret;
420421

421422
#undef __dynamic_array
422423
#define __dynamic_array(type, item, len) \
423424
ret = trace_define_field(event_call, "__data_loc " #type "[]", #item, \
424425
offsetof(typeof(field), __data_loc_##item), \
425-
sizeof(field.__data_loc_##item), 0, \
426-
FILTER_OTHER);
426+
sizeof(field.__data_loc_##item), \
427+
is_signed_type(type), FILTER_OTHER);
427428

428429
#undef __string
429430
#define __string(item, src) __dynamic_array(char, item, -1)

kernel/trace/trace_export.c

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -158,7 +158,8 @@ ftrace_format_##name(struct ftrace_event_call *unused, \
158158
BUILD_BUG_ON(len > MAX_FILTER_STR_VAL); \
159159
ret = trace_define_field(event_call, #type "[" #len "]", #item, \
160160
offsetof(typeof(field), item), \
161-
sizeof(field.item), 0, FILTER_OTHER); \
161+
sizeof(field.item), \
162+
is_signed_type(type), FILTER_OTHER); \
162163
if (ret) \
163164
return ret;
164165

@@ -168,8 +169,8 @@ ftrace_format_##name(struct ftrace_event_call *unused, \
168169
ret = trace_define_field(event_call, #type "[" #len "]", #item, \
169170
offsetof(typeof(field), \
170171
container.item), \
171-
sizeof(field.container.item), 0, \
172-
FILTER_OTHER); \
172+
sizeof(field.container.item), \
173+
is_signed_type(type), FILTER_OTHER); \
173174
if (ret) \
174175
return ret;
175176

0 commit comments

Comments
 (0)