summaryrefslogtreecommitdiffhomepage
path: root/dev/kernel/HALKit
diff options
context:
space:
mode:
authorAmlal El Mahrouss <amlal@nekernel.org>2025-07-31 10:46:03 +0100
committerAmlal El Mahrouss <amlal@nekernel.org>2025-07-31 10:46:03 +0100
commit43ace5813967229e03ac46cc00ea8ebf1a607740 (patch)
treeb643afffffe5a3cb56bdde4ee0516353e98c1042 /dev/kernel/HALKit
parentfb2e5e0fc143374dd197bcce8b6cd62719141b45 (diff)
fix: SMP: Fix `mp_register_task` thrdid could have been index out of bounds.
Signed-off-by: Amlal El Mahrouss <amlal@nekernel.org>
Diffstat (limited to 'dev/kernel/HALKit')
-rw-r--r--dev/kernel/HALKit/AMD64/HalApplicationProcessor.cc4
1 files changed, 2 insertions, 2 deletions
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;
}