Fix deadlock by reducing lock scope
This commit is contained in:
@@ -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);
|
||||||
|
|||||||
Reference in New Issue
Block a user