[NTOSKRNL]

On CcInitializeCacheMap() call, keep track of the PinAccess value so that we can later check it on pinning.
It shouldn't be set to FALSE when the user attempts to perform pinning

CORE-11310

svn path=/trunk/; revision=71404
This commit is contained in:
Pierre Schweitzer 2016-05-26 11:50:42 +00:00
parent 3caf22d458
commit c43741c804
4 changed files with 15 additions and 0 deletions

View file

@ -103,6 +103,7 @@ CcInitializeCacheMap (
/* Call old ROS cache init function */ /* Call old ROS cache init function */
Status = CcRosInitializeFileCache(FileObject, Status = CcRosInitializeFileCache(FileObject,
FileSizes, FileSizes,
PinAccess,
CallBacks, CallBacks,
LazyWriterContext); LazyWriterContext);
if (!NT_SUCCESS(Status)) if (!NT_SUCCESS(Status))

View file

@ -133,9 +133,19 @@ CcPinMappedData (
IN ULONG Flags, IN ULONG Flags,
OUT PVOID * Bcb) OUT PVOID * Bcb)
{ {
PROS_SHARED_CACHE_MAP SharedCacheMap;
CCTRACE(CC_API_DEBUG, "FileOffset=%p FileOffset=%p Length=%lu Flags=0x%lx\n", CCTRACE(CC_API_DEBUG, "FileOffset=%p FileOffset=%p Length=%lu Flags=0x%lx\n",
FileObject, FileOffset, Length, Flags); FileObject, FileOffset, Length, Flags);
ASSERT(FileObject);
ASSERT(FileObject->SectionObjectPointer);
ASSERT(FileObject->SectionObjectPointer->SharedCacheMap);
SharedCacheMap = FileObject->SectionObjectPointer->SharedCacheMap;
ASSERT(SharedCacheMap);
ASSERT(SharedCacheMap->PinAccess);
/* no-op for current implementation. */ /* no-op for current implementation. */
return TRUE; return TRUE;
} }

View file

@ -1141,6 +1141,7 @@ NTAPI
CcRosInitializeFileCache ( CcRosInitializeFileCache (
PFILE_OBJECT FileObject, PFILE_OBJECT FileObject,
PCC_FILE_SIZES FileSizes, PCC_FILE_SIZES FileSizes,
BOOLEAN PinAccess,
PCACHE_MANAGER_CALLBACKS CallBacks, PCACHE_MANAGER_CALLBACKS CallBacks,
PVOID LazyWriterContext) PVOID LazyWriterContext)
/* /*
@ -1172,6 +1173,7 @@ CcRosInitializeFileCache (
SharedCacheMap->LazyWriteContext = LazyWriterContext; SharedCacheMap->LazyWriteContext = LazyWriterContext;
SharedCacheMap->SectionSize = FileSizes->AllocationSize; SharedCacheMap->SectionSize = FileSizes->AllocationSize;
SharedCacheMap->FileSize = FileSizes->FileSize; SharedCacheMap->FileSize = FileSizes->FileSize;
SharedCacheMap->PinAccess = PinAccess;
KeInitializeSpinLock(&SharedCacheMap->CacheMapLock); KeInitializeSpinLock(&SharedCacheMap->CacheMapLock);
InitializeListHead(&SharedCacheMap->CacheMapVacbListHead); InitializeListHead(&SharedCacheMap->CacheMapVacbListHead);
FileObject->SectionObjectPointer->SharedCacheMap = SharedCacheMap; FileObject->SectionObjectPointer->SharedCacheMap = SharedCacheMap;

View file

@ -149,6 +149,7 @@ typedef struct _ROS_SHARED_CACHE_MAP
PFILE_OBJECT FileObject; PFILE_OBJECT FileObject;
LARGE_INTEGER SectionSize; LARGE_INTEGER SectionSize;
LARGE_INTEGER FileSize; LARGE_INTEGER FileSize;
BOOLEAN PinAccess;
PCACHE_MANAGER_CALLBACKS Callbacks; PCACHE_MANAGER_CALLBACKS Callbacks;
PVOID LazyWriteContext; PVOID LazyWriteContext;
KSPIN_LOCK CacheMapLock; KSPIN_LOCK CacheMapLock;
@ -320,6 +321,7 @@ NTAPI
CcRosInitializeFileCache( CcRosInitializeFileCache(
PFILE_OBJECT FileObject, PFILE_OBJECT FileObject,
PCC_FILE_SIZES FileSizes, PCC_FILE_SIZES FileSizes,
BOOLEAN PinAccess,
PCACHE_MANAGER_CALLBACKS CallBacks, PCACHE_MANAGER_CALLBACKS CallBacks,
PVOID LazyWriterContext PVOID LazyWriterContext
); );