diff options
-rw-r--r-- | include/linux/ftrace_event.h | 2 | ||||
-rw-r--r-- | include/linux/syscalls.h | 2 | ||||
-rw-r--r-- | include/trace/ftrace.h | 9 | ||||
-rw-r--r-- | kernel/trace/trace_events.c | 12 | ||||
-rw-r--r-- | kernel/trace/trace_export.c | 2 | ||||
-rw-r--r-- | kernel/trace/trace_kprobe.c | 6 | ||||
-rw-r--r-- | kernel/trace/trace_syscalls.c | 2 |
7 files changed, 17 insertions, 18 deletions
diff --git a/include/linux/ftrace_event.h b/include/linux/ftrace_event.h index 479c3c1876e6..393a8394df0e 100644 --- a/include/linux/ftrace_event.h +++ b/include/linux/ftrace_event.h | |||
@@ -133,6 +133,7 @@ struct ftrace_event_class { | |||
133 | int (*define_fields)(struct ftrace_event_call *); | 133 | int (*define_fields)(struct ftrace_event_call *); |
134 | struct list_head *(*get_fields)(struct ftrace_event_call *); | 134 | struct list_head *(*get_fields)(struct ftrace_event_call *); |
135 | struct list_head fields; | 135 | struct list_head fields; |
136 | int (*raw_init)(struct ftrace_event_call *); | ||
136 | }; | 137 | }; |
137 | 138 | ||
138 | struct ftrace_event_call { | 139 | struct ftrace_event_call { |
@@ -144,7 +145,6 @@ struct ftrace_event_call { | |||
144 | int enabled; | 145 | int enabled; |
145 | int id; | 146 | int id; |
146 | const char *print_fmt; | 147 | const char *print_fmt; |
147 | int (*raw_init)(struct ftrace_event_call *); | ||
148 | int filter_active; | 148 | int filter_active; |
149 | struct event_filter *filter; | 149 | struct event_filter *filter; |
150 | void *mod; | 150 | void *mod; |
diff --git a/include/linux/syscalls.h b/include/linux/syscalls.h index fd0f1f248cd8..211c704a71ed 100644 --- a/include/linux/syscalls.h +++ b/include/linux/syscalls.h | |||
@@ -135,7 +135,6 @@ extern struct ftrace_event_class event_class_syscall_exit; | |||
135 | .name = "sys_enter"#sname, \ | 135 | .name = "sys_enter"#sname, \ |
136 | .class = &event_class_syscall_enter, \ | 136 | .class = &event_class_syscall_enter, \ |
137 | .event = &enter_syscall_print_##sname, \ | 137 | .event = &enter_syscall_print_##sname, \ |
138 | .raw_init = init_syscall_trace, \ | ||
139 | .data = (void *)&__syscall_meta_##sname,\ | 138 | .data = (void *)&__syscall_meta_##sname,\ |
140 | } | 139 | } |
141 | 140 | ||
@@ -153,7 +152,6 @@ extern struct ftrace_event_class event_class_syscall_exit; | |||
153 | .name = "sys_exit"#sname, \ | 152 | .name = "sys_exit"#sname, \ |
154 | .class = &event_class_syscall_exit, \ | 153 | .class = &event_class_syscall_exit, \ |
155 | .event = &exit_syscall_print_##sname, \ | 154 | .event = &exit_syscall_print_##sname, \ |
156 | .raw_init = init_syscall_trace, \ | ||
157 | .data = (void *)&__syscall_meta_##sname,\ | 155 | .data = (void *)&__syscall_meta_##sname,\ |
158 | } | 156 | } |
159 | 157 | ||
diff --git a/include/trace/ftrace.h b/include/trace/ftrace.h index c7e3bcd5d52f..e7eb33420b06 100644 --- a/include/trace/ftrace.h +++ b/include/trace/ftrace.h | |||
@@ -431,8 +431,9 @@ static inline notrace int ftrace_get_offsets_##call( \ | |||
431 | * static struct ftrace_event_class __used event_class_<template> = { | 431 | * static struct ftrace_event_class __used event_class_<template> = { |
432 | * .system = "<system>", | 432 | * .system = "<system>", |
433 | * .define_fields = ftrace_define_fields_<call>, | 433 | * .define_fields = ftrace_define_fields_<call>, |
434 | * .fields = LIST_HEAD_INIT(event_class_##call.fields), \ | 434 | * .fields = LIST_HEAD_INIT(event_class_##call.fields), |
435 | * .probe = ftrace_raw_event_##call, \ | 435 | * .raw_init = trace_event_raw_init, |
436 | * .probe = ftrace_raw_event_##call, | ||
436 | * }; | 437 | * }; |
437 | * | 438 | * |
438 | * static struct ftrace_event_call __used | 439 | * static struct ftrace_event_call __used |
@@ -440,7 +441,6 @@ static inline notrace int ftrace_get_offsets_##call( \ | |||
440 | * __attribute__((section("_ftrace_events"))) event_<call> = { | 441 | * __attribute__((section("_ftrace_events"))) event_<call> = { |
441 | * .name = "<call>", | 442 | * .name = "<call>", |
442 | * .class = event_class_<template>, | 443 | * .class = event_class_<template>, |
443 | * .raw_init = trace_event_raw_init, | ||
444 | * .event = &ftrace_event_type_<call>, | 444 | * .event = &ftrace_event_type_<call>, |
445 | * .print_fmt = print_fmt_<call>, | 445 | * .print_fmt = print_fmt_<call>, |
446 | * }; | 446 | * }; |
@@ -566,6 +566,7 @@ static struct ftrace_event_class __used event_class_##call = { \ | |||
566 | .system = __stringify(TRACE_SYSTEM), \ | 566 | .system = __stringify(TRACE_SYSTEM), \ |
567 | .define_fields = ftrace_define_fields_##call, \ | 567 | .define_fields = ftrace_define_fields_##call, \ |
568 | .fields = LIST_HEAD_INIT(event_class_##call.fields),\ | 568 | .fields = LIST_HEAD_INIT(event_class_##call.fields),\ |
569 | .raw_init = trace_event_raw_init, \ | ||
569 | .probe = ftrace_raw_event_##call, \ | 570 | .probe = ftrace_raw_event_##call, \ |
570 | _TRACE_PERF_INIT(call) \ | 571 | _TRACE_PERF_INIT(call) \ |
571 | }; | 572 | }; |
@@ -579,7 +580,6 @@ __attribute__((section("_ftrace_events"))) event_##call = { \ | |||
579 | .name = #call, \ | 580 | .name = #call, \ |
580 | .class = &event_class_##template, \ | 581 | .class = &event_class_##template, \ |
581 | .event = &ftrace_event_type_##call, \ | 582 | .event = &ftrace_event_type_##call, \ |
582 | .raw_init = trace_event_raw_init, \ | ||
583 | .print_fmt = print_fmt_##template, \ | 583 | .print_fmt = print_fmt_##template, \ |
584 | }; | 584 | }; |
585 | 585 | ||
@@ -594,7 +594,6 @@ __attribute__((section("_ftrace_events"))) event_##call = { \ | |||
594 | .name = #call, \ | 594 | .name = #call, \ |
595 | .class = &event_class_##template, \ | 595 | .class = &event_class_##template, \ |
596 | .event = &ftrace_event_type_##call, \ | 596 | .event = &ftrace_event_type_##call, \ |
597 | .raw_init = trace_event_raw_init, \ | ||
598 | .print_fmt = print_fmt_##call, \ | 597 | .print_fmt = print_fmt_##call, \ |
599 | } | 598 | } |
600 | 599 | ||
diff --git a/kernel/trace/trace_events.c b/kernel/trace/trace_events.c index acc0f55742c3..8e94255a45e7 100644 --- a/kernel/trace/trace_events.c +++ b/kernel/trace/trace_events.c | |||
@@ -1008,8 +1008,8 @@ static int __trace_add_event_call(struct ftrace_event_call *call) | |||
1008 | if (!call->name) | 1008 | if (!call->name) |
1009 | return -EINVAL; | 1009 | return -EINVAL; |
1010 | 1010 | ||
1011 | if (call->raw_init) { | 1011 | if (call->class->raw_init) { |
1012 | ret = call->raw_init(call); | 1012 | ret = call->class->raw_init(call); |
1013 | if (ret < 0) { | 1013 | if (ret < 0) { |
1014 | if (ret != -ENOSYS) | 1014 | if (ret != -ENOSYS) |
1015 | pr_warning("Could not initialize trace " | 1015 | pr_warning("Could not initialize trace " |
@@ -1170,8 +1170,8 @@ static void trace_module_add_events(struct module *mod) | |||
1170 | /* The linker may leave blanks */ | 1170 | /* The linker may leave blanks */ |
1171 | if (!call->name) | 1171 | if (!call->name) |
1172 | continue; | 1172 | continue; |
1173 | if (call->raw_init) { | 1173 | if (call->class->raw_init) { |
1174 | ret = call->raw_init(call); | 1174 | ret = call->class->raw_init(call); |
1175 | if (ret < 0) { | 1175 | if (ret < 0) { |
1176 | if (ret != -ENOSYS) | 1176 | if (ret != -ENOSYS) |
1177 | pr_warning("Could not initialize trace " | 1177 | pr_warning("Could not initialize trace " |
@@ -1324,8 +1324,8 @@ static __init int event_trace_init(void) | |||
1324 | /* The linker may leave blanks */ | 1324 | /* The linker may leave blanks */ |
1325 | if (!call->name) | 1325 | if (!call->name) |
1326 | continue; | 1326 | continue; |
1327 | if (call->raw_init) { | 1327 | if (call->class->raw_init) { |
1328 | ret = call->raw_init(call); | 1328 | ret = call->class->raw_init(call); |
1329 | if (ret < 0) { | 1329 | if (ret < 0) { |
1330 | if (ret != -ENOSYS) | 1330 | if (ret != -ENOSYS) |
1331 | pr_warning("Could not initialize trace " | 1331 | pr_warning("Could not initialize trace " |
diff --git a/kernel/trace/trace_export.c b/kernel/trace/trace_export.c index e700a0c1803f..e878d06c0ac0 100644 --- a/kernel/trace/trace_export.c +++ b/kernel/trace/trace_export.c | |||
@@ -158,6 +158,7 @@ static int ftrace_raw_init_event(struct ftrace_event_call *call) | |||
158 | struct ftrace_event_class event_class_ftrace_##call = { \ | 158 | struct ftrace_event_class event_class_ftrace_##call = { \ |
159 | .system = __stringify(TRACE_SYSTEM), \ | 159 | .system = __stringify(TRACE_SYSTEM), \ |
160 | .define_fields = ftrace_define_fields_##call, \ | 160 | .define_fields = ftrace_define_fields_##call, \ |
161 | .raw_init = ftrace_raw_init_event, \ | ||
161 | }; \ | 162 | }; \ |
162 | \ | 163 | \ |
163 | struct ftrace_event_call __used \ | 164 | struct ftrace_event_call __used \ |
@@ -166,7 +167,6 @@ __attribute__((section("_ftrace_events"))) event_##call = { \ | |||
166 | .name = #call, \ | 167 | .name = #call, \ |
167 | .id = type, \ | 168 | .id = type, \ |
168 | .class = &event_class_ftrace_##call, \ | 169 | .class = &event_class_ftrace_##call, \ |
169 | .raw_init = ftrace_raw_init_event, \ | ||
170 | .print_fmt = print, \ | 170 | .print_fmt = print, \ |
171 | }; \ | 171 | }; \ |
172 | 172 | ||
diff --git a/kernel/trace/trace_kprobe.c b/kernel/trace/trace_kprobe.c index b14bf745356f..428f4a52de69 100644 --- a/kernel/trace/trace_kprobe.c +++ b/kernel/trace/trace_kprobe.c | |||
@@ -1359,13 +1359,13 @@ static int register_probe_event(struct trace_probe *tp) | |||
1359 | /* Initialize ftrace_event_call */ | 1359 | /* Initialize ftrace_event_call */ |
1360 | if (probe_is_return(tp)) { | 1360 | if (probe_is_return(tp)) { |
1361 | tp->event.trace = print_kretprobe_event; | 1361 | tp->event.trace = print_kretprobe_event; |
1362 | call->raw_init = probe_event_raw_init; | ||
1363 | INIT_LIST_HEAD(&call->class->fields); | 1362 | INIT_LIST_HEAD(&call->class->fields); |
1363 | call->class->raw_init = probe_event_raw_init; | ||
1364 | call->class->define_fields = kretprobe_event_define_fields; | 1364 | call->class->define_fields = kretprobe_event_define_fields; |
1365 | } else { | 1365 | } else { |
1366 | tp->event.trace = print_kprobe_event; | ||
1367 | call->raw_init = probe_event_raw_init; | ||
1368 | INIT_LIST_HEAD(&call->class->fields); | 1366 | INIT_LIST_HEAD(&call->class->fields); |
1367 | tp->event.trace = print_kprobe_event; | ||
1368 | call->class->raw_init = probe_event_raw_init; | ||
1369 | call->class->define_fields = kprobe_event_define_fields; | 1369 | call->class->define_fields = kprobe_event_define_fields; |
1370 | } | 1370 | } |
1371 | if (set_print_fmt(tp) < 0) | 1371 | if (set_print_fmt(tp) < 0) |
diff --git a/kernel/trace/trace_syscalls.c b/kernel/trace/trace_syscalls.c index cceccf0d2e91..1c1b9bf3ccc6 100644 --- a/kernel/trace/trace_syscalls.c +++ b/kernel/trace/trace_syscalls.c | |||
@@ -44,6 +44,7 @@ struct ftrace_event_class event_class_syscall_enter = { | |||
44 | .reg = syscall_enter_register, | 44 | .reg = syscall_enter_register, |
45 | .define_fields = syscall_enter_define_fields, | 45 | .define_fields = syscall_enter_define_fields, |
46 | .get_fields = syscall_get_enter_fields, | 46 | .get_fields = syscall_get_enter_fields, |
47 | .raw_init = init_syscall_trace, | ||
47 | }; | 48 | }; |
48 | 49 | ||
49 | struct ftrace_event_class event_class_syscall_exit = { | 50 | struct ftrace_event_class event_class_syscall_exit = { |
@@ -51,6 +52,7 @@ struct ftrace_event_class event_class_syscall_exit = { | |||
51 | .reg = syscall_exit_register, | 52 | .reg = syscall_exit_register, |
52 | .define_fields = syscall_exit_define_fields, | 53 | .define_fields = syscall_exit_define_fields, |
53 | .get_fields = syscall_get_exit_fields, | 54 | .get_fields = syscall_get_exit_fields, |
55 | .raw_init = init_syscall_trace, | ||
54 | }; | 56 | }; |
55 | 57 | ||
56 | extern unsigned long __start_syscalls_metadata[]; | 58 | extern unsigned long __start_syscalls_metadata[]; |