diff mbox series

[RFC,v3,03/10] openat2: explicitly return -E2BIG for (usize > PAGE_SIZE)

Message ID 20241010-extensible-structs-check_fields-v3-3-d2833dfe6edd@cyphar.com
State Accepted
Commit f92f0a1b05698340836229d791b3ffecc71b265a
Headers show
Series [RFC,v3,01/10] uaccess: add copy_struct_to_user helper | expand

Commit Message

Aleksa Sarai Oct. 9, 2024, 8:40 p.m. UTC
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>
---
 fs/open.c | 2 ++
 1 file changed, 2 insertions(+)
diff mbox series

Patch

diff --git a/fs/open.c b/fs/open.c
index 22adbef7ecc2..30bfcddd505d 100644
--- a/fs/open.c
+++ b/fs/open.c
@@ -1458,6 +1458,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)