[NTOS] Deduplicate MiSynchronizeSystemPde(). #179

This commit is contained in:
Amine Khaldi 2017-12-25 20:13:50 +01:00
parent 2367206744
commit 4d4e4bb68a
3 changed files with 23 additions and 43 deletions

View file

@ -2260,4 +2260,27 @@ MiRemoveZeroPageSafe(IN ULONG Color)
return 0;
}
#if (_MI_PAGING_LEVELS == 2)
FORCEINLINE
BOOLEAN
MiSynchronizeSystemPde(PMMPDE PointerPde)
{
MMPDE SystemPde;
ULONG Index;
/* Get the Index from the PDE */
Index = ((ULONG_PTR)PointerPde & (SYSTEM_PD_SIZE - 1)) / sizeof(MMPTE);
/* Copy the PDE from the double-mapped system page directory */
SystemPde = MmSystemPagePtes[Index];
*PointerPde = SystemPde;
/* Make sure we re-read the PDE and PTE */
KeMemoryBarrierWithoutFence();
/* Return, if we had success */
return SystemPde.u.Hard.Valid != 0;
}
#endif
/* EOF */

View file

@ -310,27 +310,6 @@ MiCheckVirtualAddress(IN PVOID VirtualAddress,
}
#if (_MI_PAGING_LEVELS == 2)
FORCEINLINE
BOOLEAN
MiSynchronizeSystemPde(PMMPDE PointerPde)
{
MMPDE SystemPde;
ULONG Index;
/* Get the Index from the PDE */
Index = ((ULONG_PTR)PointerPde & (SYSTEM_PD_SIZE - 1)) / sizeof(MMPTE);
/* Copy the PDE from the double-mapped system page directory */
SystemPde = MmSystemPagePtes[Index];
*PointerPde = SystemPde;
/* Make sure we re-read the PDE and PTE */
KeMemoryBarrierWithoutFence();
/* Return, if we had success */
return (BOOLEAN)SystemPde.u.Hard.Valid;
}
NTSTATUS
FASTCALL
MiCheckPdeForSessionSpace(IN PVOID Address)

View file

@ -189,28 +189,6 @@ ProtectToPTE(ULONG flProtect)
return(Attributes);
}
/* Taken from ARM3/pagfault.c */
FORCEINLINE
BOOLEAN
MiSynchronizeSystemPde(PMMPDE PointerPde)
{
MMPDE SystemPde;
ULONG Index;
/* Get the Index from the PDE */
Index = ((ULONG_PTR)PointerPde & (SYSTEM_PD_SIZE - 1)) / sizeof(MMPTE);
/* Copy the PDE from the double-mapped system page directory */
SystemPde = MmSystemPagePtes[Index];
*PointerPde = SystemPde;
/* Make sure we re-read the PDE and PTE */
KeMemoryBarrierWithoutFence();
/* Return, if we had success */
return SystemPde.u.Hard.Valid != 0;
}
NTSTATUS
NTAPI
MiDispatchFault(IN BOOLEAN StoreInstruction,