mirror of
https://github.com/reactos/reactos.git
synced 2025-02-23 17:05:46 +00:00
[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:
parent
3caf22d458
commit
c43741c804
4 changed files with 15 additions and 0 deletions
|
@ -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))
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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
|
||||||
);
|
);
|
||||||
|
|
Loading…
Reference in a new issue