Kernel: Use Userspace<T> in sched_getparam syscall

This commit is contained in:
Brian Gianforcaro 2020-08-01 17:55:28 -07:00 committed by Andreas Kling
parent f011c420c1
commit 9db5a1b92f
Notes: sideshowbarker 2024-07-19 04:22:21 +09:00
2 changed files with 5 additions and 5 deletions

View file

@ -295,7 +295,7 @@ public:
int sys$getsockname(const Syscall::SC_getsockname_params*);
int sys$getpeername(const Syscall::SC_getpeername_params*);
int sys$sched_setparam(pid_t pid, Userspace<const struct sched_param*>);
int sys$sched_getparam(pid_t pid, struct sched_param* param);
int sys$sched_getparam(pid_t pid, Userspace<struct sched_param*>);
int sys$create_thread(void* (*)(void*), const Syscall::SC_create_thread_params*);
void sys$exit_thread(void*);
int sys$join_thread(int tid, void** exit_value);

View file

@ -76,10 +76,10 @@ int Process::sys$sched_setparam(int tid, Userspace<const struct sched_param*> us
return 0;
}
int Process::sys$sched_getparam(pid_t pid, struct sched_param* param)
int Process::sys$sched_getparam(pid_t pid, Userspace<struct sched_param*> user_param)
{
REQUIRE_PROMISE(proc);
if (!validate_write_typed(param))
if (!validate_write_typed(user_param))
return -EFAULT;
InterruptDisabler disabler;
@ -93,8 +93,8 @@ int Process::sys$sched_getparam(pid_t pid, struct sched_param* param)
if (!is_superuser() && m_euid != peer->process().m_uid && m_uid != peer->process().m_uid)
return -EPERM;
int priority = peer->priority();
copy_to_user(&param->sched_priority, &priority);
struct sched_param param { (int) peer->priority() };
copy_to_user(user_param, &param);
return 0;
}