Fix deadlock by reducing lock scope
Všechny kontroly byly úspěšné
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
Všechny kontroly byly úspěšné
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
Tento commit je obsažen v:
@@ -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);
|
||||||
|
|||||||
Odkázat v novém úkolu
Zablokovat Uživatele