[NTOS:MM] Save the dirty bit when sharing a segment page
authorJérôme Gardou <jerome.gardou@reactos.org>
Mon, 14 Dec 2020 14:48:27 +0000 (15:48 +0100)
committerJérôme Gardou <jerome.gardou@reactos.org>
Wed, 3 Feb 2021 08:41:22 +0000 (09:41 +0100)
ntoskrnl/mm/section.c

index 8acc368..a3efe4f 100644 (file)
@@ -1020,6 +1020,7 @@ MmSharePageEntrySectionSegment(PMM_SECTION_SEGMENT Segment,
                                PLARGE_INTEGER Offset)
 {
     ULONG_PTR Entry;
+    BOOLEAN Dirty;
 
     Entry = MmGetPageEntrySectionSegment(Segment, Offset);
     if (Entry == 0)
@@ -1036,7 +1037,10 @@ MmSharePageEntrySectionSegment(PMM_SECTION_SEGMENT Segment,
     {
         KeBugCheck(MEMORY_MANAGEMENT);
     }
+    Dirty = IS_DIRTY_SSE(Entry);
     Entry = MAKE_SSE(PAGE_FROM_SSE(Entry), SHARE_COUNT_FROM_SSE(Entry) + 1);
+    if (Dirty)
+        Entry = DIRTY_SSE(Entry);
     MmSetPageEntrySectionSegment(Segment, Offset, Entry);
 }