mirror of
https://github.com/reactos/reactos.git
synced 2025-06-25 19:49:42 +00:00
Do not crash, use valid kernel PTE.
svn path=/trunk/; revision=45555
This commit is contained in:
parent
3c1ec16123
commit
b7b948cff5
12 changed files with 18 additions and 17 deletions
|
@ -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)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue