[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:
Pierre Schweitzer 2018-12-21 08:44:14 +01:00
parent 85cd2849c0
commit 1435ff95b4
No known key found for this signature in database
GPG key ID: 7545556C3D585B0B

View file

@ -222,18 +222,19 @@ CcRosFlushDirtyPages (
continue;
}
ASSERT(current->Dirty);
KeReleaseQueuedSpinLock(LockQueueMasterLock, OldIrql);
Locked = current->SharedCacheMap->Callbacks->AcquireForLazyWrite(
current->SharedCacheMap->LazyWriteContext, Wait);
if (!Locked)
{
OldIrql = KeAcquireQueuedSpinLock(LockQueueMasterLock);
CcRosVacbDecRefCount(current);
continue;
}
ASSERT(current->Dirty);
KeReleaseQueuedSpinLock(LockQueueMasterLock, OldIrql);
Status = CcRosFlushVacb(current);
current->SharedCacheMap->Callbacks->ReleaseFromLazyWrite(