From 156ab0c47d6a1d1d25b26b0eb6d9017b0532a575 Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Mon, 7 Mar 2022 18:00:26 +0100 Subject: [PATCH] Kernel: Mark sys$chdir() 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/chdir.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Kernel/API/Syscall.h b/Kernel/API/Syscall.h index 338f43c247..9e271e2d8d 100644 --- a/Kernel/API/Syscall.h +++ b/Kernel/API/Syscall.h @@ -52,7 +52,7 @@ enum class NeedsBigProcessLock { S(anon_create, NeedsBigProcessLock::No) \ S(beep, NeedsBigProcessLock::No) \ S(bind, NeedsBigProcessLock::Yes) \ - S(chdir, NeedsBigProcessLock::Yes) \ + S(chdir, NeedsBigProcessLock::No) \ S(chmod, NeedsBigProcessLock::Yes) \ S(chown, NeedsBigProcessLock::Yes) \ S(clock_gettime, NeedsBigProcessLock::No) \ diff --git a/Kernel/Syscalls/chdir.cpp b/Kernel/Syscalls/chdir.cpp index e109749c6a..cfe91fda5f 100644 --- a/Kernel/Syscalls/chdir.cpp +++ b/Kernel/Syscalls/chdir.cpp @@ -12,7 +12,7 @@ namespace Kernel { ErrorOr Process::sys$chdir(Userspace user_path, size_t path_length) { - VERIFY_PROCESS_BIG_LOCK_ACQUIRED(this); + VERIFY_NO_PROCESS_BIG_LOCK(this); TRY(require_promise(Pledge::rpath)); auto path = TRY(get_syscall_path_argument(user_path, path_length)); return m_current_directory.with([&](auto& current_directory) -> ErrorOr {