From 955034e86eedc3e78b17831cae77a941bae72b1e Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Sun, 12 Jan 2020 11:51:31 +0100 Subject: [PATCH] Kernel: Remove manual STAC/CLAC in create_thread() --- Kernel/Process.cpp | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/Kernel/Process.cpp b/Kernel/Process.cpp index 1c986cd009..3b910d83aa 100644 --- a/Kernel/Process.cpp +++ b/Kernel/Process.cpp @@ -3419,21 +3419,22 @@ void Process::send_signal(u8 signal, Process* sender) thread->send_signal(signal, sender); } -int Process::sys$create_thread(void* (*entry)(void*), void* argument, const Syscall::SC_create_thread_params* params) +int Process::sys$create_thread(void* (*entry)(void*), void* argument, const Syscall::SC_create_thread_params* user_params) { REQUIRE_PROMISE(thread); if (!validate_read((const void*)entry, sizeof(void*))) return -EFAULT; - if (!validate_read_typed(params)) + if (!validate_read_typed(user_params)) return -EFAULT; - stac(); - unsigned detach_state = params->m_detach_state; - int schedule_priority = params->m_schedule_priority; - void* stack_location = params->m_stack_location; - unsigned stack_size = params->m_stack_size; - clac(); + Syscall::SC_create_thread_params params; + copy_from_user(¶ms, user_params); + + unsigned detach_state = params.m_detach_state; + int schedule_priority = params.m_schedule_priority; + void* stack_location = params.m_stack_location; + unsigned stack_size = params.m_stack_size; if (!validate_write(stack_location, stack_size)) return -EFAULT;