From 87d52e5ebee3132c6ed3e79ebac2e1017b3f343b Mon Sep 17 00:00:00 2001 From: Bananymous Date: Tue, 28 May 2024 16:04:18 +0300 Subject: [PATCH] Kernel: Fix timer early wake message When printing early return message, current time was read twice. This could lead to early return check failing, but when printing and reading the time again subtraction overflow would happen. --- kernel/kernel/Timer/Timer.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/kernel/kernel/Timer/Timer.cpp b/kernel/kernel/Timer/Timer.cpp index 62234f94..06d2df3b 100644 --- a/kernel/kernel/Timer/Timer.cpp +++ b/kernel/kernel/Timer/Timer.cpp @@ -75,8 +75,9 @@ namespace Kernel return; uint64_t wake_time = ms_since_boot() + ms; Scheduler::get().set_current_thread_sleeping(wake_time); - if (ms_since_boot() < wake_time) - dwarnln("sleep woke {} ms too soon", wake_time - ms_since_boot()); + uint64_t current_time = ms_since_boot(); + if (current_time < wake_time) + dwarnln("sleep woke {} ms too soon", wake_time - current_time); } timespec SystemTimer::real_time() const