Do not crash, use valid kernel PTE.

svn path=/trunk/; revision=45555
This commit is contained in:
Dmitry Gorbachev
2010-02-10 13:56:54 +00:00
parent 3c1ec16123
commit b7b948cff5
12 changed files with 18 additions and 17 deletions
+2 -2
View File
@@ -45,7 +45,7 @@ MiMapPageInHyperSpace(IN PEPROCESS Process,
//
// Build the PTE
//
TempPte = HyperTemplatePte;
TempPte = ValidKernelPte;
TempPte.u.Hard.PageFrameNumber = Page;
MI_MAKE_LOCAL_PAGE(&TempPte); // Hyperspace is local!
@@ -157,7 +157,7 @@ MiMapPagesToZeroInHyperSpace(IN PMMPFN *Pages,
// Write the current PTE
//
PointerPte += (Offset + 1);
TempPte = HyperTemplatePte;
TempPte = ValidKernelPte;
MI_MAKE_LOCAL_PAGE(&TempPte); // Hyperspace is local!
do
{
+1 -1
View File
@@ -122,7 +122,7 @@ MmMapIoSpace(IN PHYSICAL_ADDRESS PhysicalAddress,
//
// Get the template and configure caching
//
TempPte = HyperTemplatePte;
TempPte = ValidKernelPte;
switch (CacheAttribute)
{
case MiNonCached:
+1 -1
View File
@@ -372,7 +372,7 @@ MmMapLockedPagesSpecifyCache(IN PMDL Mdl,
//
// Get the template
//
TempPte = HyperTemplatePte;
TempPte = ValidKernelPte;
switch (CacheAttribute)
{
case MiNonCached:
+2
View File
@@ -127,6 +127,8 @@ typedef struct _PHYSICAL_MEMORY_DESCRIPTOR
} PHYSICAL_MEMORY_DESCRIPTOR, *PPHYSICAL_MEMORY_DESCRIPTOR;
extern MMPTE HyperTemplatePte;
extern MMPTE ValidKernelPde;
extern MMPTE ValidKernelPte;
extern ULONG MmSizeOfNonPagedPoolInBytes;
extern ULONG MmMaximumNonPagedPoolInBytes;
+2 -2
View File
@@ -442,7 +442,7 @@ NTAPI
MiBuildPagedPool(VOID)
{
PMMPTE PointerPte, PointerPde;
MMPTE TempPte = HyperTemplatePte;
MMPTE TempPte = ValidKernelPte;
PFN_NUMBER PageFrameIndex;
KIRQL OldIrql;
ULONG Size, BitMapSize;
@@ -467,7 +467,7 @@ MiBuildPagedPool(VOID)
// page directory array in the old ReactOS Mm is used (but in a less hacky
// way).
//
TempPte = HyperTemplatePte;
TempPte = ValidKernelPte;
TempPte.u.Hard.PageFrameNumber = MmSystemPageDirectory;
ASSERT(PointerPte->u.Hard.Valid == 0);
ASSERT(TempPte.u.Hard.Valid == 1);
+1 -1
View File
@@ -108,7 +108,7 @@ MmAllocateNonCachedMemory(IN ULONG NumberOfBytes)
//
// Setup the template PTE
//
TempPte = HyperTemplatePte;
TempPte = ValidKernelPte;
//
// Now check what kind of caching we should use
+1 -1
View File
@@ -113,7 +113,7 @@ MiResolveDemandZeroFault(IN PVOID Address,
//
// Build the PTE
//
TempPte = HyperTemplatePte;
TempPte = ValidKernelPte;
TempPte.u.Hard.PageFrameNumber = PageFrameNumber;
*PointerPte = TempPte;
ASSERT(PointerPte->u.Hard.Valid == 1);
+2 -2
View File
@@ -213,7 +213,7 @@ MiAllocatePoolPages(IN POOL_TYPE PoolType,
//
// Get the template PTE we'll use to expand
//
TempPte = HyperTemplatePte;
TempPte = ValidKernelPte;
//
// Get the first PTE in expansion space
@@ -493,7 +493,7 @@ MiAllocatePoolPages(IN POOL_TYPE PoolType,
//
// Loop the pages
//
TempPte = HyperTemplatePte;
TempPte = ValidKernelPte;
do
{
//
+2 -2
View File
@@ -134,7 +134,7 @@ MmCreateKernelStack(IN BOOLEAN GuiStack,
//
// Setup the template stack PTE
//
TempPte = HyperTemplatePte;
TempPte = ValidKernelPte;
MI_MAKE_LOCAL_PAGE(&TempPte);
MI_MAKE_DIRTY_PAGE(&TempPte);
TempPte.u.Hard.PageFrameNumber = 0;
@@ -234,7 +234,7 @@ MmGrowKernelStackEx(IN PVOID StackPointer,
//
// Setup the template stack PTE
//
TempPte = HyperTemplatePte;
TempPte = ValidKernelPte;
MI_MAKE_LOCAL_PAGE(&TempPte);
MI_MAKE_DIRTY_PAGE(&TempPte);
TempPte.u.Hard.PageFrameNumber = 0;
-2
View File
@@ -1000,8 +1000,6 @@ MmUpdatePageDir(PEPROCESS Process, PVOID Address, ULONG Size)
}
}
extern MMPTE HyperTemplatePte;
VOID
INIT_FUNCTION
NTAPI
+2 -1
View File
@@ -35,6 +35,7 @@ NTAPI
MiDbgTranslatePhysicalAddress(IN ULONG64 PhysicalAddress,
IN ULONG Flags)
{
extern MMPTE ValidKernelPte;
PFN_NUMBER Pfn;
MMPTE TempPte;
PVOID MappingBaseAddress;
@@ -77,7 +78,7 @@ MiDbgTranslatePhysicalAddress(IN ULONG64 PhysicalAddress,
//
//
//
TempPte = HyperTemplatePte;
TempPte = ValidKernelPte;
//
// Convert physical address to PFN
+2 -2
View File
@@ -354,9 +354,9 @@ NTAPI
MmInitSystem(IN ULONG Phase,
IN PLOADER_PARAMETER_BLOCK LoaderBlock)
{
extern MMPTE HyperTemplatePte;
extern MMPTE ValidKernelPte;
PMMPTE PointerPte;
MMPTE TempPte = HyperTemplatePte;
MMPTE TempPte = ValidKernelPte;
PFN_NUMBER PageFrameNumber;
if (Phase == 0)