From ef45ff47032af1d4cc4c84f63c88155b5d5fe18b Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Mon, 7 Mar 2022 21:36:41 +0100 Subject: [PATCH] Kernel: Mark sys$readlink() 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/readlink.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Kernel/API/Syscall.h b/Kernel/API/Syscall.h index 1877c870e5..2fb5c580cc 100644 --- a/Kernel/API/Syscall.h +++ b/Kernel/API/Syscall.h @@ -142,7 +142,7 @@ enum class NeedsBigProcessLock { S(purge, NeedsBigProcessLock::Yes) \ S(read, NeedsBigProcessLock::Yes) \ S(pread, NeedsBigProcessLock::Yes) \ - S(readlink, NeedsBigProcessLock::Yes) \ + S(readlink, NeedsBigProcessLock::No) \ S(readv, NeedsBigProcessLock::Yes) \ S(realpath, NeedsBigProcessLock::No) \ S(recvfd, NeedsBigProcessLock::Yes) \ diff --git a/Kernel/Syscalls/readlink.cpp b/Kernel/Syscalls/readlink.cpp index 9684705b39..375bc9c5e6 100644 --- a/Kernel/Syscalls/readlink.cpp +++ b/Kernel/Syscalls/readlink.cpp @@ -12,7 +12,7 @@ namespace Kernel { ErrorOr Process::sys$readlink(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));