aboutsummaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
authorAKASHI Takahiro <takahiro.akashi@linaro.org>2014-07-04 03:28:31 -0400
committerEric Paris <eparis@redhat.com>2014-09-23 16:24:04 -0400
commit23fed6218d7f6ce6e4cde698579f0f51845f0b25 (patch)
tree0f1109d2028ec66a54c6c6df5fd9d9736a273dc5 /arch
parentb4f0d3755c5e9cc86292d5fd78261903b4f23d4a (diff)
arm64: audit: Add audit hook in syscall_trace_enter/exit()
This patch adds auditing functions on entry to or exit from every system call invocation. Acked-by: Richard Guy Briggs <rgb@redhat.com> Acked-by Will Deacon <will.deacon@arm.com> Signed-off-by: AKASHI Takahiro <takahiro.akashi@linaro.org> Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
Diffstat (limited to 'arch')
-rw-r--r--arch/arm64/kernel/ptrace.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/arch/arm64/kernel/ptrace.c b/arch/arm64/kernel/ptrace.c
index 9fde010c945f..70526cfda056 100644
--- a/arch/arm64/kernel/ptrace.c
+++ b/arch/arm64/kernel/ptrace.c
@@ -19,6 +19,7 @@
19 * along with this program. If not, see <http://www.gnu.org/licenses/>. 19 * along with this program. If not, see <http://www.gnu.org/licenses/>.
20 */ 20 */
21 21
22#include <linux/audit.h>
22#include <linux/compat.h> 23#include <linux/compat.h>
23#include <linux/kernel.h> 24#include <linux/kernel.h>
24#include <linux/sched.h> 25#include <linux/sched.h>
@@ -39,6 +40,7 @@
39#include <asm/compat.h> 40#include <asm/compat.h>
40#include <asm/debug-monitors.h> 41#include <asm/debug-monitors.h>
41#include <asm/pgtable.h> 42#include <asm/pgtable.h>
43#include <asm/syscall.h>
42#include <asm/traps.h> 44#include <asm/traps.h>
43#include <asm/system_misc.h> 45#include <asm/system_misc.h>
44 46
@@ -1113,11 +1115,16 @@ asmlinkage int syscall_trace_enter(struct pt_regs *regs)
1113 if (test_thread_flag(TIF_SYSCALL_TRACEPOINT)) 1115 if (test_thread_flag(TIF_SYSCALL_TRACEPOINT))
1114 trace_sys_enter(regs, regs->syscallno); 1116 trace_sys_enter(regs, regs->syscallno);
1115 1117
1118 audit_syscall_entry(syscall_get_arch(), regs->syscallno,
1119 regs->orig_x0, regs->regs[1], regs->regs[2], regs->regs[3]);
1120
1116 return regs->syscallno; 1121 return regs->syscallno;
1117} 1122}
1118 1123
1119asmlinkage void syscall_trace_exit(struct pt_regs *regs) 1124asmlinkage void syscall_trace_exit(struct pt_regs *regs)
1120{ 1125{
1126 audit_syscall_exit(regs);
1127
1121 if (test_thread_flag(TIF_SYSCALL_TRACEPOINT)) 1128 if (test_thread_flag(TIF_SYSCALL_TRACEPOINT))
1122 trace_sys_exit(regs, regs_return_value(regs)); 1129 trace_sys_exit(regs, regs_return_value(regs));
1123 1130