From 6c6117766ddb397f599574d08edbe7fef0e1877b Mon Sep 17 00:00:00 2001 From: Roel Messiant Date: Sun, 23 Jan 2011 19:27:13 +0000 Subject: [PATCH] [NTOS] - Only update the System Page Directory when expanding the paged pool. Fixes the PointerPde asserts. On paged pool expansion, the system page directory and the process page directory of the calling process were updated. When updating the process page directory, an assert made sure the PDE that got written was invalid. In case of the System process, both page directories are located on the same physical page. So when this process expanded the paged pool, the system page directory update automagically updated the process page directory too. The assert therefore triggered. Not explicitly updating the process page directory will result in a page fault later on, which is handled by copying the required PDE from the system page directory to the process page directory. Rumour has it this fix is incorrect because "something's wrong with the System PDE stuff". The lack of any further info however leads to this change and explanation. svn path=/trunk/; revision=50475 --- reactos/ntoskrnl/mm/ARM3/pool.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/reactos/ntoskrnl/mm/ARM3/pool.c b/reactos/ntoskrnl/mm/ARM3/pool.c index 116c6cb0a82..f22091b5848 100644 --- a/reactos/ntoskrnl/mm/ARM3/pool.c +++ b/reactos/ntoskrnl/mm/ARM3/pool.c @@ -497,7 +497,7 @@ MiAllocatePoolPages(IN POOL_TYPE PoolType, MmSystemPageDirectory[(PointerPde - MiAddressToPde(NULL)) / PDE_COUNT]); /* Write the actual PDE now */ - MI_WRITE_VALID_PDE(PointerPde, TempPde); +// MI_WRITE_VALID_PDE(PointerPde, TempPde); #endif // // Move on to the next expansion address