diff options
Diffstat (limited to 'kernel')
| -rw-r--r-- | kernel/trace/trace_events.c | 11 | ||||
| -rw-r--r-- | kernel/trace/trace_events_filter.c | 6 | ||||
| -rw-r--r-- | kernel/trace/trace_export.c | 8 | ||||
| -rw-r--r-- | kernel/trace/trace_syscalls.c | 6 |
4 files changed, 17 insertions, 14 deletions
diff --git a/kernel/trace/trace_events.c b/kernel/trace/trace_events.c index 5740e90f4ca..d33bcdeffe6 100644 --- a/kernel/trace/trace_events.c +++ b/kernel/trace/trace_events.c | |||
| @@ -28,7 +28,8 @@ DEFINE_MUTEX(event_mutex); | |||
| 28 | LIST_HEAD(ftrace_events); | 28 | LIST_HEAD(ftrace_events); |
| 29 | 29 | ||
| 30 | int trace_define_field(struct ftrace_event_call *call, const char *type, | 30 | int trace_define_field(struct ftrace_event_call *call, const char *type, |
| 31 | const char *name, int offset, int size, int is_signed) | 31 | const char *name, int offset, int size, int is_signed, |
| 32 | int filter_type) | ||
| 32 | { | 33 | { |
| 33 | struct ftrace_event_field *field; | 34 | struct ftrace_event_field *field; |
| 34 | 35 | ||
| @@ -44,7 +45,11 @@ int trace_define_field(struct ftrace_event_call *call, const char *type, | |||
| 44 | if (!field->type) | 45 | if (!field->type) |
| 45 | goto err; | 46 | goto err; |
| 46 | 47 | ||
| 47 | field->filter_type = filter_assign_type(type); | 48 | if (filter_type == FILTER_OTHER) |
| 49 | field->filter_type = filter_assign_type(type); | ||
| 50 | else | ||
| 51 | field->filter_type = filter_type; | ||
| 52 | |||
| 48 | field->offset = offset; | 53 | field->offset = offset; |
| 49 | field->size = size; | 54 | field->size = size; |
| 50 | field->is_signed = is_signed; | 55 | field->is_signed = is_signed; |
| @@ -68,7 +73,7 @@ EXPORT_SYMBOL_GPL(trace_define_field); | |||
| 68 | ret = trace_define_field(call, #type, "common_" #item, \ | 73 | ret = trace_define_field(call, #type, "common_" #item, \ |
| 69 | offsetof(typeof(ent), item), \ | 74 | offsetof(typeof(ent), item), \ |
| 70 | sizeof(ent.item), \ | 75 | sizeof(ent.item), \ |
| 71 | is_signed_type(type)); \ | 76 | is_signed_type(type), FILTER_OTHER); \ |
| 72 | if (ret) \ | 77 | if (ret) \ |
| 73 | return ret; | 78 | return ret; |
| 74 | 79 | ||
diff --git a/kernel/trace/trace_events_filter.c b/kernel/trace/trace_events_filter.c index 22e6d822bba..8a8e576733f 100644 --- a/kernel/trace/trace_events_filter.c +++ b/kernel/trace/trace_events_filter.c | |||
| @@ -475,12 +475,6 @@ static int filter_add_pred_fn(struct filter_parse_state *ps, | |||
| 475 | return 0; | 475 | return 0; |
| 476 | } | 476 | } |
| 477 | 477 | ||
| 478 | enum { | ||
| 479 | FILTER_OTHER = 0, | ||
| 480 | FILTER_STATIC_STRING, | ||
| 481 | FILTER_DYN_STRING, | ||
| 482 | }; | ||
| 483 | |||
| 484 | int filter_assign_type(const char *type) | 478 | int filter_assign_type(const char *type) |
| 485 | { | 479 | { |
| 486 | if (strstr(type, "__data_loc") && strstr(type, "char")) | 480 | if (strstr(type, "__data_loc") && strstr(type, "char")) |
diff --git a/kernel/trace/trace_export.c b/kernel/trace/trace_export.c index 70875303ae4..029a91f4228 100644 --- a/kernel/trace/trace_export.c +++ b/kernel/trace/trace_export.c | |||
| @@ -158,7 +158,8 @@ __attribute__((section("_ftrace_events"))) event_##call = { \ | |||
| 158 | #define TRACE_FIELD(type, item, assign) \ | 158 | #define TRACE_FIELD(type, item, assign) \ |
| 159 | ret = trace_define_field(event_call, #type, #item, \ | 159 | ret = trace_define_field(event_call, #type, #item, \ |
| 160 | offsetof(typeof(field), item), \ | 160 | offsetof(typeof(field), item), \ |
| 161 | sizeof(field.item), is_signed_type(type)); \ | 161 | sizeof(field.item), \ |
| 162 | is_signed_type(type), FILTER_OTHER); \ | ||
| 162 | if (ret) \ | 163 | if (ret) \ |
| 163 | return ret; | 164 | return ret; |
| 164 | 165 | ||
| @@ -166,7 +167,7 @@ __attribute__((section("_ftrace_events"))) event_##call = { \ | |||
| 166 | #define TRACE_FIELD_SPECIAL(type, item, len, cmd) \ | 167 | #define TRACE_FIELD_SPECIAL(type, item, len, cmd) \ |
| 167 | ret = trace_define_field(event_call, #type "[" #len "]", #item, \ | 168 | ret = trace_define_field(event_call, #type "[" #len "]", #item, \ |
| 168 | offsetof(typeof(field), item), \ | 169 | offsetof(typeof(field), item), \ |
| 169 | sizeof(field.item), 0); \ | 170 | sizeof(field.item), 0, FILTER_OTHER); \ |
| 170 | if (ret) \ | 171 | if (ret) \ |
| 171 | return ret; | 172 | return ret; |
| 172 | 173 | ||
| @@ -174,7 +175,8 @@ __attribute__((section("_ftrace_events"))) event_##call = { \ | |||
| 174 | #define TRACE_FIELD_SIGN(type, item, assign, is_signed) \ | 175 | #define TRACE_FIELD_SIGN(type, item, assign, is_signed) \ |
| 175 | ret = trace_define_field(event_call, #type, #item, \ | 176 | ret = trace_define_field(event_call, #type, #item, \ |
| 176 | offsetof(typeof(field), item), \ | 177 | offsetof(typeof(field), item), \ |
| 177 | sizeof(field.item), is_signed); \ | 178 | sizeof(field.item), is_signed, \ |
| 179 | FILTER_OTHER); \ | ||
| 178 | if (ret) \ | 180 | if (ret) \ |
| 179 | return ret; | 181 | return ret; |
| 180 | 182 | ||
diff --git a/kernel/trace/trace_syscalls.c b/kernel/trace/trace_syscalls.c index 46c1b977a2c..97a2454760b 100644 --- a/kernel/trace/trace_syscalls.c +++ b/kernel/trace/trace_syscalls.c | |||
| @@ -194,7 +194,8 @@ int syscall_enter_define_fields(struct ftrace_event_call *call) | |||
| 194 | for (i = 0; i < meta->nb_args; i++) { | 194 | for (i = 0; i < meta->nb_args; i++) { |
| 195 | ret = trace_define_field(call, meta->types[i], | 195 | ret = trace_define_field(call, meta->types[i], |
| 196 | meta->args[i], offset, | 196 | meta->args[i], offset, |
| 197 | sizeof(unsigned long), 0); | 197 | sizeof(unsigned long), 0, |
| 198 | FILTER_OTHER); | ||
| 198 | offset += sizeof(unsigned long); | 199 | offset += sizeof(unsigned long); |
| 199 | } | 200 | } |
| 200 | 201 | ||
| @@ -210,7 +211,8 @@ int syscall_exit_define_fields(struct ftrace_event_call *call) | |||
| 210 | if (ret) | 211 | if (ret) |
| 211 | return ret; | 212 | return ret; |
| 212 | 213 | ||
| 213 | ret = trace_define_field(call, SYSCALL_FIELD(unsigned long, ret), 0); | 214 | ret = trace_define_field(call, SYSCALL_FIELD(unsigned long, ret), 0, |
| 215 | FILTER_OTHER); | ||
| 214 | 216 | ||
| 215 | return ret; | 217 | return ret; |
| 216 | } | 218 | } |
