diff options
Diffstat (limited to 'kernel/trace/trace_syscalls.c')
-rw-r--r-- | kernel/trace/trace_syscalls.c | 22 |
1 files changed, 16 insertions, 6 deletions
diff --git a/kernel/trace/trace_syscalls.c b/kernel/trace/trace_syscalls.c index cb654542c1a1..96fc73369099 100644 --- a/kernel/trace/trace_syscalls.c +++ b/kernel/trace/trace_syscalls.c | |||
@@ -17,9 +17,9 @@ static DECLARE_BITMAP(enabled_enter_syscalls, NR_syscalls); | |||
17 | static DECLARE_BITMAP(enabled_exit_syscalls, NR_syscalls); | 17 | static DECLARE_BITMAP(enabled_exit_syscalls, NR_syscalls); |
18 | 18 | ||
19 | static int syscall_enter_register(struct ftrace_event_call *event, | 19 | static int syscall_enter_register(struct ftrace_event_call *event, |
20 | enum trace_reg type); | 20 | enum trace_reg type, void *data); |
21 | static int syscall_exit_register(struct ftrace_event_call *event, | 21 | static int syscall_exit_register(struct ftrace_event_call *event, |
22 | enum trace_reg type); | 22 | enum trace_reg type, void *data); |
23 | 23 | ||
24 | static int syscall_enter_define_fields(struct ftrace_event_call *call); | 24 | static int syscall_enter_define_fields(struct ftrace_event_call *call); |
25 | static int syscall_exit_define_fields(struct ftrace_event_call *call); | 25 | static int syscall_exit_define_fields(struct ftrace_event_call *call); |
@@ -468,8 +468,8 @@ int __init init_ftrace_syscalls(void) | |||
468 | unsigned long addr; | 468 | unsigned long addr; |
469 | int i; | 469 | int i; |
470 | 470 | ||
471 | syscalls_metadata = kzalloc(sizeof(*syscalls_metadata) * | 471 | syscalls_metadata = kcalloc(NR_syscalls, sizeof(*syscalls_metadata), |
472 | NR_syscalls, GFP_KERNEL); | 472 | GFP_KERNEL); |
473 | if (!syscalls_metadata) { | 473 | if (!syscalls_metadata) { |
474 | WARN_ON(1); | 474 | WARN_ON(1); |
475 | return -ENOMEM; | 475 | return -ENOMEM; |
@@ -649,7 +649,7 @@ void perf_sysexit_disable(struct ftrace_event_call *call) | |||
649 | #endif /* CONFIG_PERF_EVENTS */ | 649 | #endif /* CONFIG_PERF_EVENTS */ |
650 | 650 | ||
651 | static int syscall_enter_register(struct ftrace_event_call *event, | 651 | static int syscall_enter_register(struct ftrace_event_call *event, |
652 | enum trace_reg type) | 652 | enum trace_reg type, void *data) |
653 | { | 653 | { |
654 | switch (type) { | 654 | switch (type) { |
655 | case TRACE_REG_REGISTER: | 655 | case TRACE_REG_REGISTER: |
@@ -664,13 +664,18 @@ static int syscall_enter_register(struct ftrace_event_call *event, | |||
664 | case TRACE_REG_PERF_UNREGISTER: | 664 | case TRACE_REG_PERF_UNREGISTER: |
665 | perf_sysenter_disable(event); | 665 | perf_sysenter_disable(event); |
666 | return 0; | 666 | return 0; |
667 | case TRACE_REG_PERF_OPEN: | ||
668 | case TRACE_REG_PERF_CLOSE: | ||
669 | case TRACE_REG_PERF_ADD: | ||
670 | case TRACE_REG_PERF_DEL: | ||
671 | return 0; | ||
667 | #endif | 672 | #endif |
668 | } | 673 | } |
669 | return 0; | 674 | return 0; |
670 | } | 675 | } |
671 | 676 | ||
672 | static int syscall_exit_register(struct ftrace_event_call *event, | 677 | static int syscall_exit_register(struct ftrace_event_call *event, |
673 | enum trace_reg type) | 678 | enum trace_reg type, void *data) |
674 | { | 679 | { |
675 | switch (type) { | 680 | switch (type) { |
676 | case TRACE_REG_REGISTER: | 681 | case TRACE_REG_REGISTER: |
@@ -685,6 +690,11 @@ static int syscall_exit_register(struct ftrace_event_call *event, | |||
685 | case TRACE_REG_PERF_UNREGISTER: | 690 | case TRACE_REG_PERF_UNREGISTER: |
686 | perf_sysexit_disable(event); | 691 | perf_sysexit_disable(event); |
687 | return 0; | 692 | return 0; |
693 | case TRACE_REG_PERF_OPEN: | ||
694 | case TRACE_REG_PERF_CLOSE: | ||
695 | case TRACE_REG_PERF_ADD: | ||
696 | case TRACE_REG_PERF_DEL: | ||
697 | return 0; | ||
688 | #endif | 698 | #endif |
689 | } | 699 | } |
690 | return 0; | 700 | return 0; |