summaryrefslogtreecommitdiffstats
path: root/include/trace/ftrace.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/trace/ftrace.h')
-rw-r--r--include/trace/ftrace.h12
1 files changed, 8 insertions, 4 deletions
diff --git a/include/trace/ftrace.h b/include/trace/ftrace.h
index e15ae4010d51..d1d91875faa5 100644
--- a/include/trace/ftrace.h
+++ b/include/trace/ftrace.h
@@ -302,11 +302,15 @@ static struct trace_event_functions ftrace_event_type_funcs_##call = { \
#undef __array
#define __array(type, item, len) \
do { \
+ mutex_lock(&event_storage_mutex); \
BUILD_BUG_ON(len > MAX_FILTER_STR_VAL); \
- ret = ftrace_event_define_field(event_call, #type, len, \
- #item, offsetof(typeof(field), item), \
- sizeof(field.item), \
- is_signed_type(type), FILTER_OTHER); \
+ snprintf(event_storage, sizeof(event_storage), \
+ "%s[%d]", #type, len); \
+ ret = trace_define_field(event_call, event_storage, #item, \
+ offsetof(typeof(field), item), \
+ sizeof(field.item), \
+ is_signed_type(type), FILTER_OTHER); \
+ mutex_unlock(&event_storage_mutex); \
if (ret) \
return ret; \
} while (0);