From f764b8b11384fdad1dd8ebc2d1f2cc479fcfba12 Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Tue, 4 Apr 2023 16:42:49 +0200 Subject: [PATCH] Kernel: Mark sys$setsid as not needing the big lock This function is now serialized by access to the process group list, and to the current process's protected data. --- Kernel/API/Syscall.h | 2 +- Kernel/Syscalls/setpgid.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Kernel/API/Syscall.h b/Kernel/API/Syscall.h index 1300db8521..1386b5ae55 100644 --- a/Kernel/API/Syscall.h +++ b/Kernel/API/Syscall.h @@ -170,7 +170,7 @@ enum class NeedsBigProcessLock { S(setresgid, NeedsBigProcessLock::No) \ S(setresuid, NeedsBigProcessLock::No) \ S(setreuid, NeedsBigProcessLock::No) \ - S(setsid, NeedsBigProcessLock::Yes) \ + S(setsid, NeedsBigProcessLock::No) \ S(setsockopt, NeedsBigProcessLock::No) \ S(setuid, NeedsBigProcessLock::No) \ S(shutdown, NeedsBigProcessLock::No) \ diff --git a/Kernel/Syscalls/setpgid.cpp b/Kernel/Syscalls/setpgid.cpp index bfc95acde8..c52da585b5 100644 --- a/Kernel/Syscalls/setpgid.cpp +++ b/Kernel/Syscalls/setpgid.cpp @@ -26,7 +26,7 @@ ErrorOr Process::sys$getsid(pid_t pid) ErrorOr Process::sys$setsid() { - VERIFY_PROCESS_BIG_LOCK_ACQUIRED(this); + VERIFY_NO_PROCESS_BIG_LOCK(this); TRY(require_promise(Pledge::proc)); // NOTE: ProcessGroup::create_if_unused_pgid() will fail with EPERM