Commit 5e9ad7df authored by Ingo Molnar's avatar Ingo Molnar

[S390] ftrace: update system call tracer support

Commit fb34a08c ("tracing: Add trace events for each syscall
entry/exit") changed the lowlevel API to ftrace syscall tracing
but did not update s390 which started making use of it recently.

This broke the s390 build, as reported by Paul Mundt.

Update the callbacks with the syscall number and the syscall
return code values. This allows per syscall tracepoints,
syscall argument enumeration /debug/tracing/events/syscalls/
and perfcounters support and integration on s390 too.
Reported-by: default avatarPaul Mundt <lethal@linux-sh.org>
Acked-by: default avatarMartin Schwidefsky <schwidefsky@de.ibm.com>
Cc: Heiko Carstens <heiko.carstens@de.ibm.com>
Cc: Jason Baron <jbaron@redhat.com>
Cc: Steven Rostedt <rostedt@goodmis.org>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
LKML-Reference: <tip-fb34a08c@git.kernel.org>
Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
parent 3be04b47
...@@ -51,6 +51,9 @@ ...@@ -51,6 +51,9 @@
#include "compat_ptrace.h" #include "compat_ptrace.h"
#endif #endif
DEFINE_TRACE(syscall_enter);
DEFINE_TRACE(syscall_exit);
enum s390_regset { enum s390_regset {
REGSET_GENERAL, REGSET_GENERAL,
REGSET_FP, REGSET_FP,
...@@ -662,7 +665,7 @@ asmlinkage long do_syscall_trace_enter(struct pt_regs *regs) ...@@ -662,7 +665,7 @@ asmlinkage long do_syscall_trace_enter(struct pt_regs *regs)
} }
if (unlikely(test_thread_flag(TIF_SYSCALL_FTRACE))) if (unlikely(test_thread_flag(TIF_SYSCALL_FTRACE)))
ftrace_syscall_enter(regs); trace_syscall_enter(regs, regs->gprs[2]);
if (unlikely(current->audit_context)) if (unlikely(current->audit_context))
audit_syscall_entry(is_compat_task() ? audit_syscall_entry(is_compat_task() ?
...@@ -680,7 +683,7 @@ asmlinkage void do_syscall_trace_exit(struct pt_regs *regs) ...@@ -680,7 +683,7 @@ asmlinkage void do_syscall_trace_exit(struct pt_regs *regs)
regs->gprs[2]); regs->gprs[2]);
if (unlikely(test_thread_flag(TIF_SYSCALL_FTRACE))) if (unlikely(test_thread_flag(TIF_SYSCALL_FTRACE)))
ftrace_syscall_exit(regs); trace_syscall_exit(regs, regs->gprs[2]);
if (test_thread_flag(TIF_SYSCALL_TRACE)) if (test_thread_flag(TIF_SYSCALL_TRACE))
tracehook_report_syscall_exit(regs, 0); tracehook_report_syscall_exit(regs, 0);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment