]> asedeno.scripts.mit.edu Git - linux.git/blobdiff - kernel/rseq.c
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/klassert/ipsec
[linux.git] / kernel / rseq.c
index 9424ee90589effcc841ead2bd0f5ddb20e646a17..a4f86a9d6937cdfa2f13d1dcc9be863c1943d06f 100644 (file)
@@ -277,7 +277,7 @@ void __rseq_handle_notify_resume(struct ksignal *ksig, struct pt_regs *regs)
 
 error:
        sig = ksig ? ksig->sig : 0;
-       force_sigsegv(sig, t);
+       force_sigsegv(sig);
 }
 
 #ifdef CONFIG_DEBUG_RSEQ
@@ -296,7 +296,7 @@ void rseq_syscall(struct pt_regs *regs)
                return;
        if (!access_ok(t->rseq, sizeof(*t->rseq)) ||
            rseq_get_rseq_cs(t, &rseq_cs) || in_rseq_cs(ip, &rseq_cs))
-               force_sig(SIGSEGV, t);
+               force_sig(SIGSEGV);
 }
 
 #endif
@@ -310,6 +310,8 @@ SYSCALL_DEFINE4(rseq, struct rseq __user *, rseq, u32, rseq_len,
        int ret;
 
        if (flags & RSEQ_FLAG_UNREGISTER) {
+               if (flags & ~RSEQ_FLAG_UNREGISTER)
+                       return -EINVAL;
                /* Unregister rseq for current thread. */
                if (current->rseq != rseq || !current->rseq)
                        return -EINVAL;