diff options
| author | Amlal El Mahrouss <amlal@nekernel.org> | 2025-07-31 10:46:03 +0100 |
|---|---|---|
| committer | Amlal El Mahrouss <amlal@nekernel.org> | 2025-07-31 10:46:03 +0100 |
| commit | 43ace5813967229e03ac46cc00ea8ebf1a607740 (patch) | |
| tree | b643afffffe5a3cb56bdde4ee0516353e98c1042 | |
| parent | fb2e5e0fc143374dd197bcce8b6cd62719141b45 (diff) | |
fix: SMP: Fix `mp_register_task` thrdid could have been index out of bounds.
Signed-off-by: Amlal El Mahrouss <amlal@nekernel.org>
| -rw-r--r-- | dev/kernel/HALKit/AMD64/HalApplicationProcessor.cc | 4 |
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; } |
