From 46ef2f8e202b97c302633faca82ce106671d07bc Mon Sep 17 00:00:00 2001 From: Liav A Date: Fri, 26 May 2023 14:02:15 +0300 Subject: [PATCH] Kernel: Mark sys$fork as not needing the big lock All shared structures are already protected by "atomic" spinlocks for those structures, so there's no need to take the big process lock. --- Kernel/API/Syscall.h | 2 +- Kernel/Syscalls/fork.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Kernel/API/Syscall.h b/Kernel/API/Syscall.h index afa6fc57f07..e7c44f14acb 100644 --- a/Kernel/API/Syscall.h +++ b/Kernel/API/Syscall.h @@ -79,7 +79,7 @@ enum class NeedsBigProcessLock { S(fchmod, NeedsBigProcessLock::No) \ S(fchown, NeedsBigProcessLock::No) \ S(fcntl, NeedsBigProcessLock::No) \ - S(fork, NeedsBigProcessLock::Yes) \ + S(fork, NeedsBigProcessLock::No) \ S(fstat, NeedsBigProcessLock::No) \ S(fstatvfs, NeedsBigProcessLock::No) \ S(fsync, NeedsBigProcessLock::No) \ diff --git a/Kernel/Syscalls/fork.cpp b/Kernel/Syscalls/fork.cpp index d58e76d5443..927ad57e439 100644 --- a/Kernel/Syscalls/fork.cpp +++ b/Kernel/Syscalls/fork.cpp @@ -17,7 +17,7 @@ namespace Kernel { ErrorOr Process::sys$fork(RegisterState& regs) { - VERIFY_PROCESS_BIG_LOCK_ACQUIRED(this); + VERIFY_NO_PROCESS_BIG_LOCK(this); TRY(require_promise(Pledge::proc)); auto child_name = TRY(name().with([](auto& name) { return name->try_clone(); }));