From f3b9beeb391858c79b1fc474e566690cf2e765bc Mon Sep 17 00:00:00 2001 From: Pierre Schweitzer Date: Tue, 23 Oct 2018 21:48:01 +0200 Subject: [PATCH] [NTOSKRNL] Translate pinning flags to mapping flags when first mapping a file --- ntoskrnl/cc/pin.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/ntoskrnl/cc/pin.c b/ntoskrnl/cc/pin.c index 4f0e4f5a822..d972f8a75d2 100644 --- a/ntoskrnl/cc/pin.c +++ b/ntoskrnl/cc/pin.c @@ -267,6 +267,7 @@ CcpPinData( BOOLEAN Result; PROS_VACB Vacb; KIRQL OldIrql; + ULONG MapFlags; KeAcquireSpinLock(&SharedCacheMap->BcbSpinLock, &OldIrql); NewBcb = CcpFindBcb(SharedCacheMap, FileOffset, Length, TRUE); @@ -305,7 +306,13 @@ CcpPinData( return FALSE; } - Result = CcpMapData(SharedCacheMap, FileOffset, Length, Flags, &Vacb, Buffer); + MapFlags = Flags & PIN_WAIT; + if (BooleanFlagOn(Flags, PIN_NO_READ)) + { + SetFlag(MapFlags, MAP_NO_READ); + } + + Result = CcpMapData(SharedCacheMap, FileOffset, Length, MapFlags, &Vacb, Buffer); if (Result) { NewBcb = CcpGetAppropriateBcb(SharedCacheMap, Vacb, FileOffset, Length, Flags, TRUE);