From cd2e06b94ce8bb28521109bee4dc3ec8f6d2f0bc Mon Sep 17 00:00:00 2001 From: Timo Kreuzer Date: Fri, 22 Nov 2013 12:23:11 +0000 Subject: [PATCH] [NTOSKRNL] Check the PTE as well in MmArmAccessFault, when we are at high IRQL and fail if it's not valid. Otherwise we just end up in an endless loop. svn path=/trunk/; revision=61075 --- reactos/ntoskrnl/mm/ARM3/pagfault.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/reactos/ntoskrnl/mm/ARM3/pagfault.c b/reactos/ntoskrnl/mm/ARM3/pagfault.c index 25c6374e18f..ae1158e61a3 100644 --- a/reactos/ntoskrnl/mm/ARM3/pagfault.c +++ b/reactos/ntoskrnl/mm/ARM3/pagfault.c @@ -1365,9 +1365,10 @@ MmArmAccessFault(IN BOOLEAN StoreInstruction, #if (_MI_PAGING_LEVELS >= 3) (PointerPpe->u.Hard.Valid == 0) || #endif - (PointerPde->u.Hard.Valid == 0)) + (PointerPde->u.Hard.Valid == 0) || + (PointerPte->u.Hard.Valid == 0)) { - /* This fault is not valid, printf out some debugging help */ + /* This fault is not valid, print out some debugging help */ DbgPrint("MM:***PAGE FAULT AT IRQL > 1 Va %p, IRQL %lx\n", Address, OldIrql); @@ -1411,7 +1412,7 @@ MmArmAccessFault(IN BOOLEAN StoreInstruction, } /* Nothing is actually wrong */ - DPRINT1("Fault at IRQL1 is ok\n"); + DPRINT1("Fault at IRQL %u is ok (%p)\n", OldIrql, Address); return STATUS_SUCCESS; }