From 84b3289a2a3eced0cb6cfa98c081ad76fd3d644a Mon Sep 17 00:00:00 2001 From: Bananymous Date: Fri, 31 May 2024 02:56:39 +0300 Subject: [PATCH] Kernel: Move Scheduler::yield() lock check after interrupts disabled I have no idea why this solves a bug where current processor has scheduler lock at the beginning of yield. --- kernel/kernel/Scheduler.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/kernel/kernel/Scheduler.cpp b/kernel/kernel/Scheduler.cpp index bd67ba4b..19c41090 100644 --- a/kernel/kernel/Scheduler.cpp +++ b/kernel/kernel/Scheduler.cpp @@ -133,11 +133,11 @@ namespace Kernel void Scheduler::yield() { - ASSERT(!m_lock.current_processor_has_lock()); - auto state = Processor::get_interrupt_state(); Processor::set_interrupt_state(InterruptState::Disabled); + ASSERT(!m_lock.current_processor_has_lock()); + #if ARCH(x86_64) asm volatile( "movq %%rsp, %%rcx;"