Fix deadlock by reducing lock scope
All checks were successful
Builds / ExectOS (amd64, release) (push) Successful in 37s
Builds / ExectOS (amd64, debug) (push) Successful in 38s
Builds / ExectOS (i686, release) (push) Successful in 29s
Builds / ExectOS (i686, debug) (push) Successful in 30s

This commit is contained in:
2026-01-05 01:28:09 +01:00
parent 46576398a2
commit e66baa0da0

View File

@@ -165,6 +165,8 @@ MM::KernelPool::FreeKernelStack(IN PVOID Stack,
/* Convert the stack size into a page count */ /* Convert the stack size into a page count */
StackPages = SIZE_TO_PAGES(StackSize); StackPages = SIZE_TO_PAGES(StackSize);
/* Start guarded code block */
{
/* Acquire the PFN database lock */ /* Acquire the PFN database lock */
KE::QueuedSpinLockGuard SpinLock(SystemSpaceLock); KE::QueuedSpinLockGuard SpinLock(SystemSpaceLock);
@@ -181,6 +183,7 @@ MM::KernelPool::FreeKernelStack(IN PVOID Stack,
/* Advance to the next PTE */ /* Advance to the next PTE */
PointerPte = MM::Paging::AdvancePte(PointerPte, -1); PointerPte = MM::Paging::AdvancePte(PointerPte, -1);
} }
}
/* Release all system PTEs used by the stack, including the guard page */ /* Release all system PTEs used by the stack, including the guard page */
MM::Pte::ReleaseSystemPtes(PointerPte, StackPages + 1, SystemPteSpace); MM::Pte::ReleaseSystemPtes(PointerPte, StackPages + 1, SystemPteSpace);