Don't try to resolve user mode page faults in the very early boot phase. Modified: trunk/reactos/ntoskrnl/mm/mm.c _____
Modified: trunk/reactos/ntoskrnl/mm/mm.c --- trunk/reactos/ntoskrnl/mm/mm.c 2005-05-28 07:26:38 UTC (rev 15557) +++ trunk/reactos/ntoskrnl/mm/mm.c 2005-05-28 07:32:23 UTC (rev 15558) @@ -193,12 +193,12 @@
if (KeGetCurrentIrql() >= DISPATCH_LEVEL) { - DbgPrint("Page fault at high IRQL was %d\n", KeGetCurrentIrql()); + CPRINT("Page fault at high IRQL was %d\n", KeGetCurrentIrql()); return(STATUS_UNSUCCESSFUL); } if (PsGetCurrentProcess() == NULL) { - DbgPrint("No current process\n"); + CPRINT("No current process\n"); return(STATUS_UNSUCCESSFUL); }
@@ -316,7 +316,7 @@
if (KeGetCurrentIrql() >= DISPATCH_LEVEL) { - DbgPrint("Page fault at high IRQL was %d\n", KeGetCurrentIrql()); + CPRINT("Page fault at high IRQL was %d, address %x\n", KeGetCurrentIrql(), Address); return(STATUS_UNSUCCESSFUL); } if (PsGetCurrentProcess() == NULL) @@ -324,8 +324,11 @@ /* Allow this! It lets us page alloc much earlier! It won't be needed * after my init patch anyways */ - DbgPrint("No current process\n"); - //return(STATUS_UNSUCCESSFUL); + CPRINT("No current process\n"); + if (Address < KERNEL_BASE) + { + return(STATUS_UNSUCCESSFUL); + } }
/* @@ -338,7 +341,7 @@ */ if (Mode != KernelMode) { - DbgPrint("%s:%d\n",__FILE__,__LINE__); + CPRINT("Address: %x\n", Address); return(STATUS_UNSUCCESSFUL); } AddressSpace = MmGetKernelAddressSpace();