From d074aae422cf39974d0658ced35443bb1e520bb9 Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Tue, 8 Mar 2022 16:31:45 +0100 Subject: [PATCH] Kernel: Mark sys$dup2() as not needing the big lock This syscall doesn't access any data that was implicitly protected by the big lock. --- Kernel/API/Syscall.h | 2 +- Kernel/Syscalls/dup2.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Kernel/API/Syscall.h b/Kernel/API/Syscall.h index c0afb0426c..7bba964468 100644 --- a/Kernel/API/Syscall.h +++ b/Kernel/API/Syscall.h @@ -62,7 +62,7 @@ enum class NeedsBigProcessLock { S(detach_thread, NeedsBigProcessLock::Yes) \ S(disown, NeedsBigProcessLock::Yes) \ S(dump_backtrace, NeedsBigProcessLock::No) \ - S(dup2, NeedsBigProcessLock::Yes) \ + S(dup2, NeedsBigProcessLock::No) \ S(emuctl, NeedsBigProcessLock::Yes) \ S(execve, NeedsBigProcessLock::Yes) \ S(exit, NeedsBigProcessLock::Yes) \ diff --git a/Kernel/Syscalls/dup2.cpp b/Kernel/Syscalls/dup2.cpp index 9ddf754934..cea5737dd4 100644 --- a/Kernel/Syscalls/dup2.cpp +++ b/Kernel/Syscalls/dup2.cpp @@ -11,7 +11,7 @@ namespace Kernel { ErrorOr Process::sys$dup2(int old_fd, int new_fd) { - VERIFY_PROCESS_BIG_LOCK_ACQUIRED(this); + VERIFY_NO_PROCESS_BIG_LOCK(this); TRY(require_promise(Pledge::stdio)); return m_fds.with_exclusive([&](auto& fds) -> ErrorOr { auto description = TRY(fds.open_file_description(old_fd));