mirror of
https://github.com/reactos/reactos.git
synced 2026-06-03 09:51:03 +08:00
[NTOS:MM] Handle page table faults in MmArmAccessFault
These faults are handled by ARM³ and we don't need to check for a memory area. They can be recursive faults (e.g. from MiDeleteSystemPageableVm), so we might be holding the WS lock already. Passing it straight to ARM³ allows to acquire the WS lock below to look up the memory area.
This commit is contained in:
@@ -227,11 +227,12 @@ MmAccessFault(IN ULONG FaultCode,
|
||||
#endif
|
||||
}
|
||||
|
||||
/* Handle shared user page, which doesn't have a VAD / MemoryArea */
|
||||
if (PAGE_ALIGN(Address) == (PVOID)MM_SHARED_USER_DATA_VA)
|
||||
/* Handle shared user page / page table, which don't have a VAD / MemoryArea */
|
||||
if ((PAGE_ALIGN(Address) == (PVOID)MM_SHARED_USER_DATA_VA) ||
|
||||
MI_IS_PAGE_TABLE_ADDRESS(Address))
|
||||
{
|
||||
/* This is an ARM3 fault */
|
||||
DPRINT("ARM3 fault %p\n", MemoryArea);
|
||||
DPRINT("ARM3 fault %p\n", Address);
|
||||
return MmArmAccessFault(FaultCode, Address, Mode, TrapInformation);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user