diff options
author | AKASHI Takahiro <takahiro.akashi@linaro.org> | 2014-07-04 03:28:31 -0400 |
---|---|---|
committer | Eric Paris <eparis@redhat.com> | 2014-09-23 16:24:04 -0400 |
commit | 23fed6218d7f6ce6e4cde698579f0f51845f0b25 (patch) | |
tree | 0f1109d2028ec66a54c6c6df5fd9d9736a273dc5 /arch | |
parent | b4f0d3755c5e9cc86292d5fd78261903b4f23d4a (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.c | 7 |
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 | ||
1119 | asmlinkage void syscall_trace_exit(struct pt_regs *regs) | 1124 | asmlinkage 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 | ||