[NTOSKRNL]
authorTimo Kreuzer <timo.kreuzer@reactos.org>
Sat, 16 May 2015 20:10:41 +0000 (20:10 +0000)
committerTimo Kreuzer <timo.kreuzer@reactos.org>
Sat, 16 May 2015 20:10:41 +0000 (20:10 +0000)
Add an MMVAD to the MEMORY_AREA structure, instead of allocating a new one to synchronize with the process VAD tree

svn path=/trunk/; revision=67787

reactos/ntoskrnl/include/internal/mm.h
reactos/ntoskrnl/mm/marea.c

index 7415aef..f61ac5c 100644 (file)
@@ -204,6 +204,7 @@ typedef struct _ROS_SECTION_OBJECT
 
 typedef struct _MEMORY_AREA
 {
 
 typedef struct _MEMORY_AREA
 {
+    MMVAD VadNode;
     ULONG_PTR StartingVpn;
     ULONG_PTR EndingVpn;
     struct _MEMORY_AREA *Parent;
     ULONG_PTR StartingVpn;
     ULONG_PTR EndingVpn;
     struct _MEMORY_AREA *Parent;
index bae8d0d..488184a 100644 (file)
@@ -384,8 +384,8 @@ MmInsertMemoryArea(
         PMMVAD Vad;
 
         ASSERT(marea->Type == MEMORY_AREA_SECTION_VIEW || marea->Type == MEMORY_AREA_CACHE);
         PMMVAD Vad;
 
         ASSERT(marea->Type == MEMORY_AREA_SECTION_VIEW || marea->Type == MEMORY_AREA_CACHE);
-        Vad = ExAllocatePoolWithTag(NonPagedPool, sizeof(MMVAD), TAG_MVAD);
-        ASSERT(Vad);
+        Vad = &marea->VadNode;
+
         RtlZeroMemory(Vad, sizeof(MMVAD));
         Vad->StartingVpn = PAGE_ROUND_DOWN(MA_GetStartingAddress(marea)) >> PAGE_SHIFT;
         /*
         RtlZeroMemory(Vad, sizeof(MMVAD));
         Vad->StartingVpn = PAGE_ROUND_DOWN(MA_GetStartingAddress(marea)) >> PAGE_SHIFT;
         /*
@@ -825,7 +825,6 @@ MmFreeMemoryArea(
                 MiRemoveNode(MemoryArea->Vad, &Process->VadRoot);
             }
 
                 MiRemoveNode(MemoryArea->Vad, &Process->VadRoot);
             }
 
-            ExFreePoolWithTag(MemoryArea->Vad, TAG_MVAD);
             MemoryArea->Vad = NULL;
         }
     }
             MemoryArea->Vad = NULL;
         }
     }