From e911caeb1026a2e49d96bdd9c0af24fb37b7d777 Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Wed, 23 Jan 2019 05:05:45 +0100 Subject: [PATCH] Kernel: Fix dumb race in Scheduler::yield() debug code. It was perfectly possible for Scheduler::yield() to get interrupted after setting s_in_yield but before disabling interrupts. --- Kernel/Scheduler.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Kernel/Scheduler.cpp b/Kernel/Scheduler.cpp index 24bb48541d..54d137421b 100644 --- a/Kernel/Scheduler.cpp +++ b/Kernel/Scheduler.cpp @@ -164,6 +164,7 @@ bool Scheduler::pick_next() bool Scheduler::yield() { + InterruptDisabler disabler; ASSERT(!s_in_yield); s_in_yield = true; @@ -174,7 +175,6 @@ bool Scheduler::yield() //dbgprintf("%s<%u> yield()\n", current->name().characters(), current->pid()); - InterruptDisabler disabler; if (!pick_next()) { s_in_yield = false; return 1;