diff --git a/ntoskrnl/cc/fs.c b/ntoskrnl/cc/fs.c index 161833d14e2..bef6502f73f 100644 --- a/ntoskrnl/cc/fs.c +++ b/ntoskrnl/cc/fs.c @@ -180,7 +180,10 @@ CcPurgeCacheSection ( SharedCacheMap = SectionObjectPointer->SharedCacheMap; if (!SharedCacheMap) - return FALSE; + { + Success = TRUE; + goto purgeMm; + } StartOffset = FileOffset != NULL ? FileOffset->QuadPart : 0; if (Length == 0 || FileOffset == NULL) @@ -257,6 +260,11 @@ CcPurgeCacheSection ( ASSERT(Refs == 0); } + /* Now make sure that Mm doesn't hold some pages here. */ +purgeMm: + if (Success) + Success = MmPurgeSegment(SectionObjectPointer, FileOffset, Length); + return Success; }