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 708e547e83e..0ea820c6d99 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 4523f969cba..81dcef7325f 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));