]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
openat2: explicitly return -E2BIG for (usize > PAGE_SIZE)
authorAleksa Sarai <cyphar@cyphar.com>
Wed, 9 Oct 2024 20:40:36 +0000 (07:40 +1100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 1 Nov 2024 00:52:37 +0000 (01:52 +0100)
commit f92f0a1b05698340836229d791b3ffecc71b265a upstream.

While we do currently return -EFAULT in this case, it seems prudent to
follow the behaviour of other syscalls like clone3. It seems quite
unlikely that anyone depends on this error code being EFAULT, but we can
always revert this if it turns out to be an issue.

Cc: stable@vger.kernel.org # v5.6+
Fixes: fddb5d430ad9 ("open: introduce openat2(2) syscall")
Signed-off-by: Aleksa Sarai <cyphar@cyphar.com>
Link: https://lore.kernel.org/r/20241010-extensible-structs-check_fields-v3-3-d2833dfe6edd@cyphar.com
Signed-off-by: Christian Brauner <brauner@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
fs/open.c

index 97932af49071a67653ef1cba503a25c106ca7e87..84e5dcc31c0e43ca2e980b06d00363faba48c013 100644 (file)
--- a/fs/open.c
+++ b/fs/open.c
@@ -1296,6 +1296,8 @@ SYSCALL_DEFINE4(openat2, int, dfd, const char __user *, filename,
 
        if (unlikely(usize < OPEN_HOW_SIZE_VER0))
                return -EINVAL;
+       if (unlikely(usize > PAGE_SIZE))
+               return -E2BIG;
 
        err = copy_struct_from_user(&tmp, sizeof(tmp), how, usize);
        if (err)