mirror of
https://github.com/reactos/reactos.git
synced 2025-08-05 16:32:59 +00:00
[NTOSKRNL] Don't call AcquireForLazyWrite with the master lock held
This incorrect behavior was leading to a call at too high IRQL for paged code. This was triggered by MS FastFAT. ReleaseFromLazyWrite call was already correctly called to that regard. CORE-11819
This commit is contained in:
parent
85cd2849c0
commit
1435ff95b4
1 changed files with 5 additions and 4 deletions
|
@ -222,18 +222,19 @@ CcRosFlushDirtyPages (
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ASSERT(current->Dirty);
|
||||||
|
|
||||||
|
KeReleaseQueuedSpinLock(LockQueueMasterLock, OldIrql);
|
||||||
|
|
||||||
Locked = current->SharedCacheMap->Callbacks->AcquireForLazyWrite(
|
Locked = current->SharedCacheMap->Callbacks->AcquireForLazyWrite(
|
||||||
current->SharedCacheMap->LazyWriteContext, Wait);
|
current->SharedCacheMap->LazyWriteContext, Wait);
|
||||||
if (!Locked)
|
if (!Locked)
|
||||||
{
|
{
|
||||||
|
OldIrql = KeAcquireQueuedSpinLock(LockQueueMasterLock);
|
||||||
CcRosVacbDecRefCount(current);
|
CcRosVacbDecRefCount(current);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
ASSERT(current->Dirty);
|
|
||||||
|
|
||||||
KeReleaseQueuedSpinLock(LockQueueMasterLock, OldIrql);
|
|
||||||
|
|
||||||
Status = CcRosFlushVacb(current);
|
Status = CcRosFlushVacb(current);
|
||||||
|
|
||||||
current->SharedCacheMap->Callbacks->ReleaseFromLazyWrite(
|
current->SharedCacheMap->Callbacks->ReleaseFromLazyWrite(
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue