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; |
