diff options
author | Heiko Carstens <heiko.carstens@de.ibm.com> | 2009-06-12 04:26:47 -0400 |
---|---|---|
committer | Martin Schwidefsky <schwidefsky@de.ibm.com> | 2009-06-12 04:27:39 -0400 |
commit | 9bf1226b33dc2f94fc37ffd70ee161e2bda1ff5c (patch) | |
tree | 3bad5cab583d2940bf9755398a1da7bc77e1b759 /arch/s390/kernel/ptrace.c | |
parent | 88dbd2037229bd2ed7543ffd0d8f2d9dec9d31d2 (diff) |
[S390] ftrace: add system call tracer support
System call tracer support for s390.
Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Diffstat (limited to 'arch/s390/kernel/ptrace.c')
-rw-r--r-- | arch/s390/kernel/ptrace.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/arch/s390/kernel/ptrace.c b/arch/s390/kernel/ptrace.c index b6fc1ae2ffcb..490b39934d65 100644 --- a/arch/s390/kernel/ptrace.c +++ b/arch/s390/kernel/ptrace.c | |||
@@ -37,6 +37,7 @@ | |||
37 | #include <linux/regset.h> | 37 | #include <linux/regset.h> |
38 | #include <linux/tracehook.h> | 38 | #include <linux/tracehook.h> |
39 | #include <linux/seccomp.h> | 39 | #include <linux/seccomp.h> |
40 | #include <trace/syscall.h> | ||
40 | #include <asm/compat.h> | 41 | #include <asm/compat.h> |
41 | #include <asm/segment.h> | 42 | #include <asm/segment.h> |
42 | #include <asm/page.h> | 43 | #include <asm/page.h> |
@@ -661,6 +662,9 @@ asmlinkage long do_syscall_trace_enter(struct pt_regs *regs) | |||
661 | ret = -1; | 662 | ret = -1; |
662 | } | 663 | } |
663 | 664 | ||
665 | if (unlikely(test_thread_flag(TIF_SYSCALL_FTRACE))) | ||
666 | ftrace_syscall_enter(regs); | ||
667 | |||
664 | if (unlikely(current->audit_context)) | 668 | if (unlikely(current->audit_context)) |
665 | audit_syscall_entry(is_compat_task() ? | 669 | audit_syscall_entry(is_compat_task() ? |
666 | AUDIT_ARCH_S390 : AUDIT_ARCH_S390X, | 670 | AUDIT_ARCH_S390 : AUDIT_ARCH_S390X, |
@@ -676,6 +680,9 @@ asmlinkage void do_syscall_trace_exit(struct pt_regs *regs) | |||
676 | audit_syscall_exit(AUDITSC_RESULT(regs->gprs[2]), | 680 | audit_syscall_exit(AUDITSC_RESULT(regs->gprs[2]), |
677 | regs->gprs[2]); | 681 | regs->gprs[2]); |
678 | 682 | ||
683 | if (unlikely(test_thread_flag(TIF_SYSCALL_FTRACE))) | ||
684 | ftrace_syscall_exit(regs); | ||
685 | |||
679 | if (test_thread_flag(TIF_SYSCALL_TRACE)) | 686 | if (test_thread_flag(TIF_SYSCALL_TRACE)) |
680 | tracehook_report_syscall_exit(regs, 0); | 687 | tracehook_report_syscall_exit(regs, 0); |
681 | } | 688 | } |