aboutsummaryrefslogtreecommitdiffstats
path: root/arch/x86/kernel/ptrace.c
diff options
context:
space:
mode:
authorFrederic Weisbecker <fweisbec@gmail.com>2009-03-06 23:53:00 -0500
committerIngo Molnar <mingo@elte.hu>2009-03-13 01:25:44 -0400
commit1b3fa2ce64363c289b3b14723cca7290bf91cfce (patch)
treefcf6988ca5fa716e7f3964c3a29954fe80b03fd7 /arch/x86/kernel/ptrace.c
parentee08c6eccb7d1295516f7cf420fddf7b14e9146f (diff)
tracing/x86: basic implementation of syscall tracing for x86
Provide the x86 trace callbacks to trace syscalls. Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com> Acked-by: Steven Rostedt <rostedt@goodmis.org> Cc: Lai Jiangshan <laijs@cn.fujitsu.com> LKML-Reference: <1236401580-5758-3-git-send-email-fweisbec@gmail.com> Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'arch/x86/kernel/ptrace.c')
-rw-r--r--arch/x86/kernel/ptrace.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/arch/x86/kernel/ptrace.c b/arch/x86/kernel/ptrace.c
index 3d9672e59c16..99749d6e87a8 100644
--- a/arch/x86/kernel/ptrace.c
+++ b/arch/x86/kernel/ptrace.c
@@ -21,6 +21,7 @@
21#include <linux/audit.h> 21#include <linux/audit.h>
22#include <linux/seccomp.h> 22#include <linux/seccomp.h>
23#include <linux/signal.h> 23#include <linux/signal.h>
24#include <linux/ftrace.h>
24 25
25#include <asm/uaccess.h> 26#include <asm/uaccess.h>
26#include <asm/pgtable.h> 27#include <asm/pgtable.h>
@@ -1416,6 +1417,9 @@ asmregparm long syscall_trace_enter(struct pt_regs *regs)
1416 tracehook_report_syscall_entry(regs)) 1417 tracehook_report_syscall_entry(regs))
1417 ret = -1L; 1418 ret = -1L;
1418 1419
1420 if (unlikely(test_thread_flag(TIF_SYSCALL_FTRACE)))
1421 ftrace_syscall_enter(regs);
1422
1419 if (unlikely(current->audit_context)) { 1423 if (unlikely(current->audit_context)) {
1420 if (IS_IA32) 1424 if (IS_IA32)
1421 audit_syscall_entry(AUDIT_ARCH_I386, 1425 audit_syscall_entry(AUDIT_ARCH_I386,
@@ -1439,6 +1443,9 @@ asmregparm void syscall_trace_leave(struct pt_regs *regs)
1439 if (unlikely(current->audit_context)) 1443 if (unlikely(current->audit_context))
1440 audit_syscall_exit(AUDITSC_RESULT(regs->ax), regs->ax); 1444 audit_syscall_exit(AUDITSC_RESULT(regs->ax), regs->ax);
1441 1445
1446 if (unlikely(test_thread_flag(TIF_SYSCALL_FTRACE)))
1447 ftrace_syscall_exit(regs);
1448
1442 if (test_thread_flag(TIF_SYSCALL_TRACE)) 1449 if (test_thread_flag(TIF_SYSCALL_TRACE))
1443 tracehook_report_syscall_exit(regs, 0); 1450 tracehook_report_syscall_exit(regs, 0);
1444 1451