From e3c5477df43d5587397b70c4e3fcfb3a4462c445 Mon Sep 17 00:00:00 2001 From: Bananymous Date: Sun, 4 Jun 2023 01:19:04 +0300 Subject: [PATCH] Kernel: reorder process exit steps --- kernel/kernel/Scheduler.cpp | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/kernel/kernel/Scheduler.cpp b/kernel/kernel/Scheduler.cpp index e3a546d8..1d439a80 100644 --- a/kernel/kernel/Scheduler.cpp +++ b/kernel/kernel/Scheduler.cpp @@ -271,16 +271,20 @@ namespace Kernel DISABLE_INTERRUPTS(); load_temp_stack(); + PageTable::kernel().load(); - Process* process = &m_current_thread->thread->process(); - + ASSERT(m_current_thread); + Thread* thread = m_current_thread->thread; + Process* process = &thread->process(); remove_threads(m_blocking_threads, it->thread->process().pid() == process->pid()); remove_threads(m_sleeping_threads, it->thread->process().pid() == process->pid()); remove_threads(m_active_threads, it != m_current_thread && it->thread->process().pid() == process->pid()); - delete m_current_thread->thread; - delete process; remove_and_advance_current_thread(); + + delete thread; + delete process; + execute_current_thread(); ASSERT_NOT_REACHED();