parisc/ptrace: run seccomp after ptrace
authorKees Cook <keescook@chromium.org>
Thu, 2 Jun 2016 20:15:52 +0000 (13:15 -0700)
committerKees Cook <keescook@chromium.org>
Tue, 14 Jun 2016 17:54:44 +0000 (10:54 -0700)
Close the hole where ptrace can change a syscall out from under seccomp.

Signed-off-by: Kees Cook <keescook@chromium.org>
Cc: "James E.J. Bottomley" <jejb@parisc-linux.org>
Cc: Helge Deller <deller@gmx.de>
Cc: linux-parisc@vger.kernel.org
arch/parisc/kernel/ptrace.c

index 8edc47c0b98e9612a97f180ac7ea861b6253ba4c..e02d7b4d2b693dd94af83e2f6a215452d8d7e04d 100644 (file)
@@ -311,10 +311,6 @@ long compat_arch_ptrace(struct task_struct *child, compat_long_t request,
 
 long do_syscall_trace_enter(struct pt_regs *regs)
 {
-       /* Do the secure computing check first. */
-       if (secure_computing(NULL) == -1)
-               return -1;
-
        if (test_thread_flag(TIF_SYSCALL_TRACE) &&
            tracehook_report_syscall_entry(regs)) {
                /*
@@ -325,6 +321,11 @@ long do_syscall_trace_enter(struct pt_regs *regs)
                regs->gr[20] = -1UL;
                goto out;
        }
+
+       /* Do the secure computing check after ptrace. */
+       if (secure_computing(NULL) == -1)
+               return -1;
+
 #ifdef CONFIG_HAVE_SYSCALL_TRACEPOINTS
        if (unlikely(test_thread_flag(TIF_SYSCALL_TRACEPOINT)))
                trace_sys_enter(regs, regs->gr[20]);