Author: rmessiant
Date: Sun Jan 23 19:27:13 2011
New Revision: 50475
URL: http://svn.reactos.org/svn/reactos?rev=50475&view=rev
Log:
[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.
Modified:
trunk/reactos/ntoskrnl/mm/ARM3/pool.c
Modified: trunk/reactos/ntoskrnl/mm/ARM3/pool.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/mm/ARM3/pool.c?re…
==============================================================================
--- trunk/reactos/ntoskrnl/mm/ARM3/pool.c [iso-8859-1] (original)
+++ trunk/reactos/ntoskrnl/mm/ARM3/pool.c [iso-8859-1] Sun Jan 23 19:27:13 2011
@@ -497,7 +497,7 @@
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