From 43ace5813967229e03ac46cc00ea8ebf1a607740 Mon Sep 17 00:00:00 2001 From: Amlal El Mahrouss Date: Thu, 31 Jul 2025 10:46:03 +0100 Subject: fix: SMP: Fix `mp_register_task` thrdid could have been index out of bounds. Signed-off-by: Amlal El Mahrouss --- dev/kernel/HALKit/AMD64/HalApplicationProcessor.cc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'dev/kernel/HALKit') diff --git a/dev/kernel/HALKit/AMD64/HalApplicationProcessor.cc b/dev/kernel/HALKit/AMD64/HalApplicationProcessor.cc index 79f25920..0dbd6815 100644 --- a/dev/kernel/HALKit/AMD64/HalApplicationProcessor.cc +++ b/dev/kernel/HALKit/AMD64/HalApplicationProcessor.cc @@ -115,6 +115,8 @@ EXTERN_C HAL::StackFramePtr mp_get_current_task(ThreadID thrdid) { EXTERN_C BOOL mp_register_task(HAL::StackFramePtr stack_frame, ThreadID thrdid) { if (!stack_frame) return NO; + if (thrdid > kSMPCount) return NO; + if (!kSMPAware) { sched_jump_to_task(kHWThread[thrdid].mFramePtr); @@ -122,9 +124,7 @@ EXTERN_C BOOL mp_register_task(HAL::StackFramePtr stack_frame, ThreadID thrdid) } HardwareThreadScheduler::The()[thrdid].Leak()->Busy(NO); - kHWThread[thrdid].mFramePtr = stack_frame; - if (thrdid > kSMPCount) return NO; return YES; } -- cgit v1.2.3