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.
This commit is contained in:
Andreas Kling 2022-04-04 00:09:54 +02:00
parent 9250ac0c24
commit 55814f6e0e
2 changed files with 4 additions and 4 deletions

View file

@ -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) \

View file

@ -19,7 +19,7 @@ ErrorOr<FlatPtr> Process::sys$yield()
ErrorOr<FlatPtr> Process::sys$sched_setparam(int pid, Userspace<const struct sched_param*> 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<FlatPtr> Process::sys$sched_setparam(int pid, Userspace<const struct sch
ErrorOr<FlatPtr> Process::sys$sched_getparam(pid_t pid, Userspace<struct sched_param*> user_param)
{
VERIFY_PROCESS_BIG_LOCK_ACQUIRED(this)
VERIFY_NO_PROCESS_BIG_LOCK(this)
TRY(require_promise(Pledge::proc));
int priority;
{