Browse Source

MIPS/ptrace: run seccomp after ptrace

Close the hole where ptrace can change a syscall out from under seccomp.

Signed-off-by: Kees Cook <keescook@chromium.org>
Cc: Ralf Baechle <ralf@linux-mips.org>
Cc: "Maciej W. Rozycki" <macro@imgtec.com>
Cc: James Hogan <james.hogan@imgtec.com>
Cc: linux-mips@linux-mips.org
Kees Cook 9 năm trước cách đây
mục cha
commit
2ac3c8d18e
1 tập tin đã thay đổi với 4 bổ sung5 xóa
  1. 4 5
      arch/mips/kernel/ptrace.c

+ 4 - 5
arch/mips/kernel/ptrace.c

@@ -888,17 +888,16 @@ long arch_ptrace(struct task_struct *child, long request,
  */
  */
 asmlinkage long syscall_trace_enter(struct pt_regs *regs, long syscall)
 asmlinkage long syscall_trace_enter(struct pt_regs *regs, long syscall)
 {
 {
-	long ret = 0;
 	user_exit();
 	user_exit();
 
 
 	current_thread_info()->syscall = syscall;
 	current_thread_info()->syscall = syscall;
 
 
-	if (secure_computing(NULL) == -1)
-		return -1;
-
 	if (test_thread_flag(TIF_SYSCALL_TRACE) &&
 	if (test_thread_flag(TIF_SYSCALL_TRACE) &&
 	    tracehook_report_syscall_entry(regs))
 	    tracehook_report_syscall_entry(regs))
-		ret = -1;
+		return -1;
+
+	if (secure_computing(NULL) == -1)
+		return -1;
 
 
 	if (unlikely(test_thread_flag(TIF_SYSCALL_TRACEPOINT)))
 	if (unlikely(test_thread_flag(TIF_SYSCALL_TRACEPOINT)))
 		trace_sys_enter(regs, regs->regs[2]);
 		trace_sys_enter(regs, regs->regs[2]);