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 | |
| 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>
| -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 | ||
