From 6d3d41abe2259f1002e078566b1b05cd3addb469 Mon Sep 17 00:00:00 2001 From: Bananymous Date: Wed, 25 Jun 2025 10:39:08 +0300 Subject: [PATCH] Kernel: Fix possible division by zero in scheduler --- kernel/kernel/Scheduler.cpp | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/kernel/kernel/Scheduler.cpp b/kernel/kernel/Scheduler.cpp index 248a8539..7c8f4dcc 100644 --- a/kernel/kernel/Scheduler.cpp +++ b/kernel/kernel/Scheduler.cpp @@ -458,9 +458,14 @@ namespace Kernel else { const uint64_t duration_ns = current_ns - m_last_load_balance_ns; - const uint64_t max_thread_load_x1000 = 1000 * m_most_loaded_threads.front().node->time_used_ns / duration_ns; - const uint64_t max_load_thread_count = ((2000 / max_thread_load_x1000) + 1) / 2; - s_processor_infos[Processor::current_id().as_u32()].max_load_threads = max_load_thread_count; + const uint64_t max_thread_load_x1000 = 1000 * most_loaded_thread.node->time_used_ns / duration_ns; + if (max_thread_load_x1000 == 0) + s_processor_infos[Processor::current_id().as_u32()].max_load_threads = 0; + else + { + const uint64_t max_load_thread_count = ((2000 / max_thread_load_x1000) + 1) / 2; + s_processor_infos[Processor::current_id().as_u32()].max_load_threads = max_load_thread_count; + } } }