- 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
This commit is contained in:
Roel Messiant 2011-01-23 19:27:13 +00:00
parent ce2570f468
commit 6c6117766d

View file

@ -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