diff --git a/reactos/ntoskrnl/mm/procsup.c b/reactos/ntoskrnl/mm/procsup.c index 4a04c797a13..e417915ce40 100644 --- a/reactos/ntoskrnl/mm/procsup.c +++ b/reactos/ntoskrnl/mm/procsup.c @@ -258,11 +258,15 @@ MmGrowKernelStack(PVOID StackPointer) { PETHREAD Thread = PsGetCurrentThread(); - /* Make sure we have reserved space for our grow */ - if (((PCHAR)Thread->Tcb.StackBase - (PCHAR)Thread->Tcb.StackLimit) > - (KERNEL_LARGE_STACK_SIZE + PAGE_SIZE)) + /* Make sure the stack did not overflow */ + ASSERT(((PCHAR)Thread->Tcb.StackBase - (PCHAR)Thread->Tcb.StackLimit) <= + (KERNEL_LARGE_STACK_SIZE + PAGE_SIZE)); + + /* Check if we have reserved space for our grow */ + if ((PCHAR)Thread->Tcb.StackBase - (PCHAR)Thread->Tcb.StackLimit + + KERNEL_STACK_SIZE > KERNEL_LARGE_STACK_SIZE) { - return STATUS_NO_MEMORY; + return STATUS_STACK_OVERFLOW; } /*