diff options
Diffstat (limited to 'arch/mips/kernel/ptrace.c')
| -rw-r--r-- | arch/mips/kernel/ptrace.c | 14 | 
1 files changed, 10 insertions, 4 deletions
diff --git a/arch/mips/kernel/ptrace.c b/arch/mips/kernel/ptrace.c index 893e7bccf22..bbd57b20b43 100644 --- a/arch/mips/kernel/ptrace.c +++ b/arch/mips/kernel/ptrace.c @@ -20,11 +20,11 @@  #include <linux/mm.h>  #include <linux/errno.h>  #include <linux/ptrace.h> -#include <linux/audit.h>  #include <linux/smp.h>  #include <linux/user.h>  #include <linux/security.h> -#include <linux/signal.h> +#include <linux/audit.h> +#include <linux/seccomp.h>  #include <asm/byteorder.h>  #include <asm/cpu.h> @@ -470,12 +470,17 @@ static inline int audit_arch(void)   */  asmlinkage void do_syscall_trace(struct pt_regs *regs, int entryexit)  { +	/* do the secure computing check first */ +	if (!entryexit) +		secure_computing(regs->regs[0]); +  	if (unlikely(current->audit_context) && entryexit)  		audit_syscall_exit(AUDITSC_RESULT(regs->regs[2]),  		                   regs->regs[2]);  	if (!(current->ptrace & PT_PTRACED))  		goto out; +  	if (!test_thread_flag(TIF_SYSCALL_TRACE))  		goto out; @@ -493,9 +498,10 @@ asmlinkage void do_syscall_trace(struct pt_regs *regs, int entryexit)  		send_sig(current->exit_code, current, 1);  		current->exit_code = 0;  	} - out: + +out:  	if (unlikely(current->audit_context) && !entryexit) -		audit_syscall_entry(audit_arch(), regs->regs[2], +		audit_syscall_entry(audit_arch(), regs->regs[0],  				    regs->regs[4], regs->regs[5],  				    regs->regs[6], regs->regs[7]);  }  |