[ros-diffs] [sir_richard] 45624: [NTOS]: Fix a logic error which could cause pages on the free list which failed to be zeroed out due to running out of hyperspace mappings to appear as being on the zero page list even though they were inserted back on the free page list.

sir_richard at svn.reactos.org sir_richard at svn.reactos.org
Fri Feb 19 19:25:29 CET 2010


Author: sir_richard
Date: Fri Feb 19 19:25:29 2010
New Revision: 45624

URL: http://svn.reactos.org/svn/reactos?rev=45624&view=rev
Log:
[NTOS]: Fix a logic error which could cause pages on the free list which failed to be zeroed out due to running out of hyperspace mappings to appear as being on the zero page list even though they were inserted back on the free page list.

Modified:
    trunk/reactos/ntoskrnl/mm/freelist.c

Modified: trunk/reactos/ntoskrnl/mm/freelist.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/mm/freelist.c?rev=45624&r1=45623&r2=45624&view=diff
==============================================================================
--- trunk/reactos/ntoskrnl/mm/freelist.c [iso-8859-1] (original)
+++ trunk/reactos/ntoskrnl/mm/freelist.c [iso-8859-1] Fri Feb 19 19:25:29 2010
@@ -1000,15 +1000,16 @@
          Status = MiZeroPage(Pfn);
 
          oldIrql = KeAcquireQueuedSpinLock(LockQueuePfnLock);
-         PageDescriptor->u3.e1.PageLocation = ZeroedPageList;
          if (NT_SUCCESS(Status))
          {
             InsertHeadList(&FreeZeroedPageListHead, ListEntry);
+            PageDescriptor->u3.e1.PageLocation = ZeroedPageList;
             Count++;
          }
          else
          {
             InsertHeadList(&FreeUnzeroedPageListHead, ListEntry);
+            PageDescriptor->u3.e1.PageLocation = FreePageList;
             UnzeroedPageCount++;
          }
 




More information about the Ros-diffs mailing list