[NTOSKRNL] Translate pinning flags to mapping flags when first mapping a file
authorPierre Schweitzer <pierre@reactos.org>
Tue, 23 Oct 2018 19:48:01 +0000 (21:48 +0200)
committerPierre Schweitzer <pierre@reactos.org>
Tue, 23 Oct 2018 20:07:53 +0000 (22:07 +0200)
ntoskrnl/cc/pin.c

index 4f0e4f5..d972f8a 100644 (file)
@@ -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);