mirror of
https://github.com/ApfelTeeSaft/reactos.git
synced 2026-08-29 04:13:32 +00:00
Do not crash, use valid kernel PTE.
svn path=/trunk/; revision=45555
This commit is contained in:
@@ -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
|
||||
{
|
||||
|
||||
@@ -122,7 +122,7 @@ MmMapIoSpace(IN PHYSICAL_ADDRESS PhysicalAddress,
|
||||
//
|
||||
// Get the template and configure caching
|
||||
//
|
||||
TempPte = HyperTemplatePte;
|
||||
TempPte = ValidKernelPte;
|
||||
switch (CacheAttribute)
|
||||
{
|
||||
case MiNonCached:
|
||||
|
||||
@@ -372,7 +372,7 @@ MmMapLockedPagesSpecifyCache(IN PMDL Mdl,
|
||||
//
|
||||
// Get the template
|
||||
//
|
||||
TempPte = HyperTemplatePte;
|
||||
TempPte = ValidKernelPte;
|
||||
switch (CacheAttribute)
|
||||
{
|
||||
case MiNonCached:
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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
|
||||
{
|
||||
//
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -1000,8 +1000,6 @@ MmUpdatePageDir(PEPROCESS Process, PVOID Address, ULONG Size)
|
||||
}
|
||||
}
|
||||
|
||||
extern MMPTE HyperTemplatePte;
|
||||
|
||||
VOID
|
||||
INIT_FUNCTION
|
||||
NTAPI
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user