diff --git a/reactos/ntoskrnl/mm/ARM3/sysldr.c b/reactos/ntoskrnl/mm/ARM3/sysldr.c index 537d269e560..071461f0807 100644 --- a/reactos/ntoskrnl/mm/ARM3/sysldr.c +++ b/reactos/ntoskrnl/mm/ARM3/sysldr.c @@ -1457,6 +1457,15 @@ MiFindInitializationCode(OUT PVOID *StartVa, LdrEntry = CONTAINING_RECORD(NextEntry, LDR_DATA_TABLE_ENTRY, InLoadOrderLinks); DllBase = (ULONG_PTR)LdrEntry->DllBase; + /* Only process boot loaded images. Other drivers are processed by + MmFreeDriverInitialization */ + if (LdrEntry->Flags & LDRP_MM_LOADED) + { + /* Keep going */ + NextEntry = NextEntry->Flink; + continue; + } + /* Get the NT header */ NtHeader = RtlImageNtHeader((PVOID)DllBase); if (!NtHeader) @@ -2562,6 +2571,10 @@ MiSetPagingOfDriver(IN PMMPTE PointerPte, PMMPFN Pfn1; PAGED_CODE(); + /* The page fault handler is broken and doesn't page back in! */ + DPRINT1("WARNING: MiSetPagingOfDriver() called, but paging is broken! ignoring!\n"); + return; + /* Get the driver's base address */ ImageBase = MiPteToAddress(PointerPte); ASSERT(MI_IS_SESSION_IMAGE_ADDRESS(ImageBase) == FALSE);