From f9444f0c52596e7d7e9e5d3a36c844ac3ccfd447 Mon Sep 17 00:00:00 2001 From: Sir Richard Date: Wed, 21 Jul 2010 18:09:31 +0000 Subject: [PATCH] [NTOS]: Handle faults on user-mode addresses, from user-mode processes, if they are owned by ARM3, so they can be forwarded to the VAD fault handler. svn path=/trunk/; revision=48164 --- reactos/ntoskrnl/mm/mmfault.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/reactos/ntoskrnl/mm/mmfault.c b/reactos/ntoskrnl/mm/mmfault.c index ab3f28fc665..50b5611e7f4 100644 --- a/reactos/ntoskrnl/mm/mmfault.c +++ b/reactos/ntoskrnl/mm/mmfault.c @@ -284,6 +284,11 @@ MmAccessFault(IN BOOLEAN StoreInstruction, * can go away. */ MemoryArea = MmLocateMemoryAreaByAddress(MmGetKernelAddressSpace(), Address); + if (!(MemoryArea) && (Address <= MM_HIGHEST_VAD_ADDRESS)) + { + /* Could this be a VAD fault from user-mode? */ + MemoryArea = MmLocateMemoryAreaByAddress(MmGetCurrentAddressSpace(), Address); + } if ((!(MemoryArea) && ((ULONG_PTR)Address >= (ULONG_PTR)MmPagedPoolStart)) || ((MemoryArea) && (MemoryArea->Type == MEMORY_AREA_OWNED_BY_ARM3))) { @@ -292,7 +297,7 @@ MmAccessFault(IN BOOLEAN StoreInstruction, // DPRINT("ARM3 fault %p\n", MemoryArea); return MmArmAccessFault(StoreInstruction, Address, Mode, TrapInformation); - } + } /* Keep same old ReactOS Behaviour */ if (StoreInstruction) -- 2.17.1