From 8142f7b19693434c20623b447b834442124c9549 Mon Sep 17 00:00:00 2001 From: Liav A Date: Fri, 26 May 2023 14:08:40 +0300 Subject: [PATCH] Kernel: Mark sys$get_dir_entries as not needing the big lock After examination of all overriden Inode::traverse_as_directory methods it seems like proper locking is already existing everywhere, so there's no need to take the big process lock anymore, as there's no access to shared process structures anyway. --- Kernel/API/Syscall.h | 2 +- Kernel/Syscalls/get_dir_entries.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Kernel/API/Syscall.h b/Kernel/API/Syscall.h index e7c44f14ac..565b5e1fe2 100644 --- a/Kernel/API/Syscall.h +++ b/Kernel/API/Syscall.h @@ -86,7 +86,7 @@ enum class NeedsBigProcessLock { S(ftruncate, NeedsBigProcessLock::No) \ S(futex, NeedsBigProcessLock::Yes) \ S(futimens, NeedsBigProcessLock::No) \ - S(get_dir_entries, NeedsBigProcessLock::Yes) \ + S(get_dir_entries, NeedsBigProcessLock::No) \ S(get_root_session_id, NeedsBigProcessLock::No) \ S(get_stack_bounds, NeedsBigProcessLock::No) \ S(get_thread_name, NeedsBigProcessLock::No) \ diff --git a/Kernel/Syscalls/get_dir_entries.cpp b/Kernel/Syscalls/get_dir_entries.cpp index 47929675ce..530eb575a8 100644 --- a/Kernel/Syscalls/get_dir_entries.cpp +++ b/Kernel/Syscalls/get_dir_entries.cpp @@ -11,7 +11,7 @@ namespace Kernel { ErrorOr Process::sys$get_dir_entries(int fd, Userspace user_buffer, size_t user_size) { - VERIFY_PROCESS_BIG_LOCK_ACQUIRED(this); + VERIFY_NO_PROCESS_BIG_LOCK(this); TRY(require_promise(Pledge::stdio)); if (user_size > NumericLimits::max()) return EINVAL;