From 72982e3c2b3dd36a70ec4a3e32f96b7278717ef2 Mon Sep 17 00:00:00 2001 From: Bananymous Date: Sun, 9 Nov 2025 16:31:11 +0200 Subject: [PATCH] Kernel/LibC: Take fcntl extra field as uintptr_t This allows passing pointers to fcntl --- kernel/include/kernel/OpenFileDescriptorSet.h | 2 +- kernel/include/kernel/Process.h | 2 +- kernel/kernel/OpenFileDescriptorSet.cpp | 2 +- kernel/kernel/Process.cpp | 2 +- userspace/libraries/LibC/fcntl.cpp | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/kernel/include/kernel/OpenFileDescriptorSet.h b/kernel/include/kernel/OpenFileDescriptorSet.h index 791b0b89..ae990354 100644 --- a/kernel/include/kernel/OpenFileDescriptorSet.h +++ b/kernel/include/kernel/OpenFileDescriptorSet.h @@ -33,7 +33,7 @@ namespace Kernel BAN::ErrorOr dup2(int, int); - BAN::ErrorOr fcntl(int fd, int cmd, int extra); + BAN::ErrorOr fcntl(int fd, int cmd, uintptr_t extra); BAN::ErrorOr seek(int fd, off_t offset, int whence); BAN::ErrorOr tell(int) const; diff --git a/kernel/include/kernel/Process.h b/kernel/include/kernel/Process.h index 10a1cdcc..67f9a289 100644 --- a/kernel/include/kernel/Process.h +++ b/kernel/include/kernel/Process.h @@ -149,7 +149,7 @@ namespace Kernel BAN::ErrorOr sys_pipe(int fildes[2]); BAN::ErrorOr sys_dup2(int fildes, int fildes2); - BAN::ErrorOr sys_fcntl(int fildes, int cmd, int extra); + BAN::ErrorOr sys_fcntl(int fildes, int cmd, uintptr_t extra); BAN::ErrorOr sys_seek(int fd, off_t offset, int whence); BAN::ErrorOr sys_tell(int fd); diff --git a/kernel/kernel/OpenFileDescriptorSet.cpp b/kernel/kernel/OpenFileDescriptorSet.cpp index 4bb03f8a..95eadb3c 100644 --- a/kernel/kernel/OpenFileDescriptorSet.cpp +++ b/kernel/kernel/OpenFileDescriptorSet.cpp @@ -217,7 +217,7 @@ namespace Kernel return fildes; } - BAN::ErrorOr OpenFileDescriptorSet::fcntl(int fd, int cmd, int extra) + BAN::ErrorOr OpenFileDescriptorSet::fcntl(int fd, int cmd, uintptr_t extra) { LockGuard _(m_mutex); diff --git a/kernel/kernel/Process.cpp b/kernel/kernel/Process.cpp index 15adc08d..8402bba3 100644 --- a/kernel/kernel/Process.cpp +++ b/kernel/kernel/Process.cpp @@ -1997,7 +1997,7 @@ namespace Kernel return TRY(m_open_file_descriptors.dup2(fildes, fildes2)); } - BAN::ErrorOr Process::sys_fcntl(int fildes, int cmd, int extra) + BAN::ErrorOr Process::sys_fcntl(int fildes, int cmd, uintptr_t extra) { return TRY(m_open_file_descriptors.fcntl(fildes, cmd, extra)); } diff --git a/userspace/libraries/LibC/fcntl.cpp b/userspace/libraries/LibC/fcntl.cpp index 49045e82..055a0451 100644 --- a/userspace/libraries/LibC/fcntl.cpp +++ b/userspace/libraries/LibC/fcntl.cpp @@ -40,7 +40,7 @@ int fcntl(int fildes, int cmd, ...) va_list args; va_start(args, cmd); - int extra = va_arg(args, int); + uintptr_t extra = va_arg(args, uintptr_t); va_end(args); return syscall(SYS_FCNTL, fildes, cmd, extra);