From 55814f6e0ecf465f70fd234aa4023d5a18100969 Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Mon, 4 Apr 2022 00:09:54 +0200 Subject: [PATCH] Kernel: Mark sys$sched_{set,get}param() as not needing the big lock Both of these syscalls take the scheduler lock while accessing the thread priority, so there's no reliance on the process big lock. --- Kernel/API/Syscall.h | 4 ++-- Kernel/Syscalls/sched.cpp | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Kernel/API/Syscall.h b/Kernel/API/Syscall.h index 5921e24cbd..c728fe9e42 100644 --- a/Kernel/API/Syscall.h +++ b/Kernel/API/Syscall.h @@ -144,8 +144,8 @@ enum class NeedsBigProcessLock { S(recvmsg, NeedsBigProcessLock::Yes) \ S(rename, NeedsBigProcessLock::Yes) \ S(rmdir, NeedsBigProcessLock::Yes) \ - S(sched_getparam, NeedsBigProcessLock::Yes) \ - S(sched_setparam, NeedsBigProcessLock::Yes) \ + S(sched_getparam, NeedsBigProcessLock::No) \ + S(sched_setparam, NeedsBigProcessLock::No) \ S(sendfd, NeedsBigProcessLock::No) \ S(sendmsg, NeedsBigProcessLock::Yes) \ S(set_coredump_metadata, NeedsBigProcessLock::Yes) \ diff --git a/Kernel/Syscalls/sched.cpp b/Kernel/Syscalls/sched.cpp index a10eee08da..2f5d007cba 100644 --- a/Kernel/Syscalls/sched.cpp +++ b/Kernel/Syscalls/sched.cpp @@ -19,7 +19,7 @@ ErrorOr Process::sys$yield() ErrorOr Process::sys$sched_setparam(int pid, Userspace user_param) { - VERIFY_PROCESS_BIG_LOCK_ACQUIRED(this) + VERIFY_NO_PROCESS_BIG_LOCK(this) TRY(require_promise(Pledge::proc)); auto param = TRY(copy_typed_from_user(user_param)); @@ -43,7 +43,7 @@ ErrorOr Process::sys$sched_setparam(int pid, Userspace Process::sys$sched_getparam(pid_t pid, Userspace user_param) { - VERIFY_PROCESS_BIG_LOCK_ACQUIRED(this) + VERIFY_NO_PROCESS_BIG_LOCK(this) TRY(require_promise(Pledge::proc)); int priority; {