|
@@ -14,6 +14,7 @@
|
|
#include <linux/security.h>
|
|
#include <linux/security.h>
|
|
#include <linux/signal.h>
|
|
#include <linux/signal.h>
|
|
#include <linux/tracehook.h>
|
|
#include <linux/tracehook.h>
|
|
|
|
+#include <linux/audit.h>
|
|
|
|
|
|
#include <asm/uaccess.h>
|
|
#include <asm/uaccess.h>
|
|
#include <asm/pgtable.h>
|
|
#include <asm/pgtable.h>
|
|
@@ -316,15 +317,18 @@ long arch_ptrace(struct task_struct *child, long request,
|
|
asmlinkage unsigned long syscall_trace_enter(void)
|
|
asmlinkage unsigned long syscall_trace_enter(void)
|
|
{
|
|
{
|
|
unsigned long ret = 0;
|
|
unsigned long ret = 0;
|
|
|
|
+ struct pt_regs *regs = current_pt_regs();
|
|
if (test_thread_flag(TIF_SYSCALL_TRACE) &&
|
|
if (test_thread_flag(TIF_SYSCALL_TRACE) &&
|
|
tracehook_report_syscall_entry(current_pt_regs()))
|
|
tracehook_report_syscall_entry(current_pt_regs()))
|
|
ret = -1UL;
|
|
ret = -1UL;
|
|
|
|
+ audit_syscall_entry(AUDIT_ARCH_ALPHA, regs->r0, regs->r16, regs->r17, regs->r18, regs->r19);
|
|
return ret ?: current_pt_regs()->r0;
|
|
return ret ?: current_pt_regs()->r0;
|
|
}
|
|
}
|
|
|
|
|
|
asmlinkage void
|
|
asmlinkage void
|
|
syscall_trace_leave(void)
|
|
syscall_trace_leave(void)
|
|
{
|
|
{
|
|
|
|
+ audit_syscall_exit(current_pt_regs());
|
|
if (test_thread_flag(TIF_SYSCALL_TRACE))
|
|
if (test_thread_flag(TIF_SYSCALL_TRACE))
|
|
tracehook_report_syscall_exit(current_pt_regs(), 0);
|
|
tracehook_report_syscall_exit(current_pt_regs(), 0);
|
|
}
|
|
}
|