From: Mathieu Desnoyers Date: Wed, 11 Dec 2019 16:17:11 +0000 (-0500) Subject: rseq: Reject unknown flags on rseq unregister X-Git-Tag: v5.5-rc7~14^2~1 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=66528a4575eee9f5a5270219894ab6178f146e84;p=thirdparty%2Flinux.git rseq: Reject unknown flags on rseq unregister It is preferrable to reject unknown flags within rseq unregistration rather than to ignore them. It is an oversight caused by the fact that the check for unknown flags is after the rseq unregister flag check. Signed-off-by: Mathieu Desnoyers Signed-off-by: Peter Zijlstra (Intel) Cc: Linus Torvalds Cc: Peter Zijlstra Cc: Thomas Gleixner Link: https://lkml.kernel.org/r/20191211161713.4490-2-mathieu.desnoyers@efficios.com Signed-off-by: Ingo Molnar --- diff --git a/kernel/rseq.c b/kernel/rseq.c index 27c48eb7de402..a4f86a9d6937c 100644 --- a/kernel/rseq.c +++ b/kernel/rseq.c @@ -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;