Author: tkreuzer Date: Fri Nov 22 12:23:11 2013 New Revision: 61075
URL: http://svn.reactos.org/svn/reactos?rev=61075&view=rev Log: [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.
Modified: trunk/reactos/ntoskrnl/mm/ARM3/pagfault.c
Modified: trunk/reactos/ntoskrnl/mm/ARM3/pagfault.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/mm/ARM3/pagfault.c... ============================================================================== --- trunk/reactos/ntoskrnl/mm/ARM3/pagfault.c [iso-8859-1] (original) +++ trunk/reactos/ntoskrnl/mm/ARM3/pagfault.c [iso-8859-1] Fri Nov 22 12:23:11 2013 @@ -1365,9 +1365,10 @@ #if (_MI_PAGING_LEVELS >= 3) (PointerPpe->u.Hard.Valid == 0) || #endif - (PointerPde->u.Hard.Valid == 0)) - { - /* This fault is not valid, printf out some debugging help */ + (PointerPde->u.Hard.Valid == 0) || + (PointerPte->u.Hard.Valid == 0)) + { + /* 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 @@ }
/* 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; }