[NTOS:MM] Fix paged pool expansion
authorTimo Kreuzer <timo.kreuzer@reactos.org>
Sun, 4 Feb 2018 18:20:56 +0000 (19:20 +0100)
committerTimo Kreuzer <timo.kreuzer@reactos.org>
Mon, 20 Aug 2018 16:07:35 +0000 (18:07 +0200)
ntoskrnl/mm/ARM3/pool.c

index 7cebabe..113a7aa 100644 (file)
@@ -550,7 +550,11 @@ MiAllocatePoolPages(IN POOL_TYPE PoolType,
                 TempPde.u.Hard.PageFrameNumber = PageFrameNumber;
 #if (_MI_PAGING_LEVELS >= 3)
                 /* On PAE/x64 systems, there's no double-buffering */
-                ASSERT(FALSE);
+                /* Initialize the PFN entry for it */
+                MiInitializePfnForOtherProcess(PageFrameNumber,
+                                               (PMMPTE)PointerPde,
+                                               PFN_FROM_PTE(MiAddressToPte(PointerPde)));
+
 #else
                 //
                 // Save it into our double-buffered system page directory
@@ -561,10 +565,11 @@ MiAllocatePoolPages(IN POOL_TYPE PoolType,
                 MiInitializePfnForOtherProcess(PageFrameNumber,
                                                (PMMPTE)PointerPde,
                                                MmSystemPageDirectory[(PointerPde - MiAddressToPde(NULL)) / PDE_COUNT]);
+#endif
 
                 /* Write the actual PDE now */
-//                MI_WRITE_VALID_PDE(PointerPde, TempPde);
-#endif
+                MI_WRITE_VALID_PDE(PointerPde, TempPde);
+
                 //
                 // Move on to the next expansion address
                 //