summaryrefslogtreecommitdiffstats
path: root/include/linux/tracehook.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/linux/tracehook.h')
-rw-r--r--include/linux/tracehook.h9
1 files changed, 6 insertions, 3 deletions
diff --git a/include/linux/tracehook.h b/include/linux/tracehook.h
index 8446573cc682..36fb3bbed6b2 100644
--- a/include/linux/tracehook.h
+++ b/include/linux/tracehook.h
@@ -54,13 +54,15 @@ struct linux_binprm;
54/* 54/*
55 * ptrace report for syscall entry and exit looks identical. 55 * ptrace report for syscall entry and exit looks identical.
56 */ 56 */
57static inline int ptrace_report_syscall(struct pt_regs *regs) 57static inline int ptrace_report_syscall(struct pt_regs *regs,
58 unsigned long message)
58{ 59{
59 int ptrace = current->ptrace; 60 int ptrace = current->ptrace;
60 61
61 if (!(ptrace & PT_PTRACED)) 62 if (!(ptrace & PT_PTRACED))
62 return 0; 63 return 0;
63 64
65 current->ptrace_message = message;
64 ptrace_notify(SIGTRAP | ((ptrace & PT_TRACESYSGOOD) ? 0x80 : 0)); 66 ptrace_notify(SIGTRAP | ((ptrace & PT_TRACESYSGOOD) ? 0x80 : 0));
65 67
66 /* 68 /*
@@ -73,6 +75,7 @@ static inline int ptrace_report_syscall(struct pt_regs *regs)
73 current->exit_code = 0; 75 current->exit_code = 0;
74 } 76 }
75 77
78 current->ptrace_message = 0;
76 return fatal_signal_pending(current); 79 return fatal_signal_pending(current);
77} 80}
78 81
@@ -98,7 +101,7 @@ static inline int ptrace_report_syscall(struct pt_regs *regs)
98static inline __must_check int tracehook_report_syscall_entry( 101static inline __must_check int tracehook_report_syscall_entry(
99 struct pt_regs *regs) 102 struct pt_regs *regs)
100{ 103{
101 return ptrace_report_syscall(regs); 104 return ptrace_report_syscall(regs, PTRACE_EVENTMSG_SYSCALL_ENTRY);
102} 105}
103 106
104/** 107/**
@@ -123,7 +126,7 @@ static inline void tracehook_report_syscall_exit(struct pt_regs *regs, int step)
123 if (step) 126 if (step)
124 user_single_step_report(regs); 127 user_single_step_report(regs);
125 else 128 else
126 ptrace_report_syscall(regs); 129 ptrace_report_syscall(regs, PTRACE_EVENTMSG_SYSCALL_EXIT);
127} 130}
128 131
129/** 132/**