diff options
-rw-r--r-- | Kernel/Process.h | 2 | ||||
-rw-r--r-- | Kernel/Syscalls/sched.cpp | 8 |
2 files changed, 5 insertions, 5 deletions
diff --git a/Kernel/Process.h b/Kernel/Process.h index cf72dfc429..d9087d663f 100644 --- a/Kernel/Process.h +++ b/Kernel/Process.h @@ -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); diff --git a/Kernel/Syscalls/sched.cpp b/Kernel/Syscalls/sched.cpp index 909aa7ca32..b144f39792 100644 --- a/Kernel/Syscalls/sched.cpp +++ b/Kernel/Syscalls/sched.cpp @@ -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(¶m->sched_priority, &priority); + struct sched_param param { (int) peer->priority() }; + copy_to_user(user_param, ¶m); return 0; } |