From 8080e072811db73d5337d70bb6df8b2baff170dc Mon Sep 17 00:00:00 2001 From: Aiken Harris Date: Sun, 17 May 2026 14:38:44 +0200 Subject: [PATCH] Fix stack pointer miscalculation caused by adding KERNEL_STACK_SIZE twice --- xtoskrnl/ke/amd64/krnlinit.cc | 3 ++- xtoskrnl/ke/i686/krnlinit.cc | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/xtoskrnl/ke/amd64/krnlinit.cc b/xtoskrnl/ke/amd64/krnlinit.cc index d56e301..bd39b4f 100644 --- a/xtoskrnl/ke/amd64/krnlinit.cc +++ b/xtoskrnl/ke/amd64/krnlinit.cc @@ -4,6 +4,7 @@ * FILE: xtoskrnl/ke/amd64/krnlinit.cc * DESCRIPTION: CPU architecture specific kernel initialization * DEVELOPERS: Rafal Kupiec + * Aiken Harris */ #include @@ -180,7 +181,7 @@ KE::KernelInit::SwitchBootStack(VOID) PVOID StartKernel; /* Calculate the stack pointer at the top of the buffer, ensuring it is properly aligned as required by the ABI */ - Stack = ((ULONG_PTR)AR::ProcSup::GetBootStack() + KERNEL_STACK_SIZE) & ~(STACK_ALIGNMENT - 1); + Stack = ((ULONG_PTR)AR::ProcSup::GetBootStack() & ~(STACK_ALIGNMENT - 1)); /* Get address of KernelInit::StartKernel() */ StartKernel = (PVOID)KE::KernelInit::BootstrapKernel; diff --git a/xtoskrnl/ke/i686/krnlinit.cc b/xtoskrnl/ke/i686/krnlinit.cc index b18737b..3bc5023 100644 --- a/xtoskrnl/ke/i686/krnlinit.cc +++ b/xtoskrnl/ke/i686/krnlinit.cc @@ -4,6 +4,7 @@ * FILE: xtoskrnl/ke/i686/krnlinit.cc * DESCRIPTION: CPU architecture specific kernel initialization * DEVELOPERS: Rafal Kupiec + * Aiken Harris */ #include @@ -180,7 +181,7 @@ KE::KernelInit::SwitchBootStack(VOID) PVOID StartKernel; /* Calculate the stack pointer at the top of the buffer, ensuring it is properly aligned as required by the ABI */ - Stack = ((ULONG_PTR)AR::ProcSup::GetBootStack() + KERNEL_STACK_SIZE) & ~(STACK_ALIGNMENT - 1); + Stack = ((ULONG_PTR)AR::ProcSup::GetBootStack() & ~(STACK_ALIGNMENT - 1)); /* Get address of KernelInit::StartKernel() */ StartKernel = (PVOID)KE::KernelInit::BootstrapKernel;