From 2688ee28ff3d24d9cc3f753432f504dc9b602077 Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Mon, 7 Mar 2022 21:33:44 +0100 Subject: [PATCH] Kernel: Mark sys$stat() 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/stat.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Kernel/API/Syscall.h b/Kernel/API/Syscall.h index 76c1c15677..1877c870e5 100644 --- a/Kernel/API/Syscall.h +++ b/Kernel/API/Syscall.h @@ -179,7 +179,7 @@ enum class NeedsBigProcessLock { S(sigtimedwait, NeedsBigProcessLock::Yes) \ S(socket, NeedsBigProcessLock::Yes) \ S(socketpair, NeedsBigProcessLock::Yes) \ - S(stat, NeedsBigProcessLock::Yes) \ + S(stat, NeedsBigProcessLock::No) \ S(statvfs, NeedsBigProcessLock::Yes) \ S(symlink, NeedsBigProcessLock::Yes) \ S(sync, NeedsBigProcessLock::No) \ diff --git a/Kernel/Syscalls/stat.cpp b/Kernel/Syscalls/stat.cpp index f35a76df2e..8c9a191916 100644 --- a/Kernel/Syscalls/stat.cpp +++ b/Kernel/Syscalls/stat.cpp @@ -23,7 +23,7 @@ ErrorOr Process::sys$fstat(int fd, Userspace user_statbuf) ErrorOr Process::sys$stat(Userspace user_params) { - VERIFY_PROCESS_BIG_LOCK_ACQUIRED(this) + VERIFY_NO_PROCESS_BIG_LOCK(this); TRY(require_promise(Pledge::rpath)); auto params = TRY(copy_typed_from_user(user_params));