From 307932857e7d458f585672a4e4814110e0ff95ef Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Tue, 16 Aug 2022 20:20:11 +0200 Subject: [PATCH] Kernel: Make sys$pipe() not take the big lock This system call mainly accesses the file descriptor table, and this is already guarded by MutexProtected. --- Kernel/API/Syscall.h | 2 +- Kernel/Syscalls/pipe.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Kernel/API/Syscall.h b/Kernel/API/Syscall.h index 9e3d247beb..b15a4d5f4c 100644 --- a/Kernel/API/Syscall.h +++ b/Kernel/API/Syscall.h @@ -126,7 +126,7 @@ enum class NeedsBigProcessLock { S(open, NeedsBigProcessLock::Yes) \ S(perf_event, NeedsBigProcessLock::Yes) \ S(perf_register_string, NeedsBigProcessLock::Yes) \ - S(pipe, NeedsBigProcessLock::Yes) \ + S(pipe, NeedsBigProcessLock::No) \ S(pledge, NeedsBigProcessLock::Yes) \ S(poll, NeedsBigProcessLock::Yes) \ S(posix_fallocate, NeedsBigProcessLock::No) \ diff --git a/Kernel/Syscalls/pipe.cpp b/Kernel/Syscalls/pipe.cpp index 10c8c01f84..365fb8c4a1 100644 --- a/Kernel/Syscalls/pipe.cpp +++ b/Kernel/Syscalls/pipe.cpp @@ -11,7 +11,7 @@ namespace Kernel { ErrorOr Process::sys$pipe(int pipefd[2], int flags) { - VERIFY_PROCESS_BIG_LOCK_ACQUIRED(this) + VERIFY_NO_PROCESS_BIG_LOCK(this) TRY(require_promise(Pledge::stdio)); // Reject flags other than O_CLOEXEC, O_NONBLOCK