From 775e6d6865a2e74235d3811572982a73bba4cbc5 Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Mon, 3 Apr 2023 13:28:50 +0200 Subject: [PATCH] Kernel: Mark sys$fcntl as not needing the big lock This syscall operates on the file descriptor table, and on individual open file descriptions. Both of those are already protected by scoped locking mechanisms. --- Kernel/API/Syscall.h | 2 +- Kernel/Syscalls/fcntl.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Kernel/API/Syscall.h b/Kernel/API/Syscall.h index 708e547e83..0ea820c6d9 100644 --- a/Kernel/API/Syscall.h +++ b/Kernel/API/Syscall.h @@ -77,7 +77,7 @@ enum class NeedsBigProcessLock { S(fchdir, NeedsBigProcessLock::No) \ S(fchmod, NeedsBigProcessLock::No) \ S(fchown, NeedsBigProcessLock::No) \ - S(fcntl, NeedsBigProcessLock::Yes) \ + S(fcntl, NeedsBigProcessLock::No) \ S(fork, NeedsBigProcessLock::Yes) \ S(fstat, NeedsBigProcessLock::No) \ S(fstatvfs, NeedsBigProcessLock::No) \ diff --git a/Kernel/Syscalls/fcntl.cpp b/Kernel/Syscalls/fcntl.cpp index 4523f969cb..81dcef7325 100644 --- a/Kernel/Syscalls/fcntl.cpp +++ b/Kernel/Syscalls/fcntl.cpp @@ -12,7 +12,7 @@ namespace Kernel { ErrorOr Process::sys$fcntl(int fd, int cmd, uintptr_t arg) { - VERIFY_PROCESS_BIG_LOCK_ACQUIRED(this); + VERIFY_NO_PROCESS_BIG_LOCK(this); TRY(require_promise(Pledge::stdio)); dbgln_if(IO_DEBUG, "sys$fcntl: fd={}, cmd={}, arg={}", fd, cmd, arg); auto description = TRY(open_file_description(fd));