Author: tkreuzer
Date: Sun May 17 00:35:47 2015
New Revision: 67798
URL: 
http://svn.reactos.org/svn/reactos?rev=67798&view=rev
Log:
[NTOSKRNL]
Don't check if a AMR3 owned memory area can be inserted, since we already know
it's ok. Delete the related memory area code.
Modified:
    trunk/reactos/ntoskrnl/mm/marea.c
Modified: trunk/reactos/ntoskrnl/mm/marea.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/mm/marea.c?rev=67…
==============================================================================
--- trunk/reactos/ntoskrnl/mm/marea.c   [iso-8859-1] (original)
+++ trunk/reactos/ntoskrnl/mm/marea.c   [iso-8859-1] Sun May 17 00:35:47 2015
@@ -56,112 +56,6 @@
 /* FUNCTIONS *****************************************************************/
-/**
- * @name MmIterateFirstNode
- *
- * @param Node
- *        Head node of the MEMORY_AREA tree.
- *
- * @return The leftmost MEMORY_AREA node (ie. the one with lowest
- *         address)
- */
-
-static PMEMORY_AREA MmIterateFirstNode(PMEMORY_AREA Node)
-{
-    while (Node->LeftChild != NULL)
-        Node = Node->LeftChild;
-
-    return Node;
-}
-
-/**
- * @name MmIterateNextNode
- *
- * @param Node
- *        Current node in the tree.
- *
- * @return Next node in the tree (sorted by address).
- */
-
-static PMEMORY_AREA MmIterateNextNode(PMEMORY_AREA Node)
-{
-    if (Node->RightChild != NULL)
-    {
-        Node = Node->RightChild;
-        while (Node->LeftChild != NULL)
-            Node = Node->LeftChild;
-    }
-    else
-    {
-        PMEMORY_AREA TempNode = NULL;
-
-        do
-        {
-            /* Check if we're at the end of tree. */
-            if (Node->Parent == NULL)
-                return NULL;
-
-            TempNode = Node;
-            Node = Node->Parent;
-        }
-        while (TempNode == Node->RightChild);
-    }
-    return Node;
-}
-
-/**
- * @name MmIterateLastNode
- *
- * @param Node
- *        Head node of the MEMORY_AREA tree.
- *
- * @return The rightmost MEMORY_AREA node (ie. the one with highest
- *         address)
- */
-
-static PMEMORY_AREA MmIterateLastNode(PMEMORY_AREA Node)
-{
-    while (Node->RightChild != NULL)
-        Node = Node->RightChild;
-
-    return Node;
-}
-
-/**
- * @name MmIteratePreviousNode
- *
- * @param Node
- *        Current node in the tree.
- *
- * @return Previous node in the tree (sorted by address).
- */
-
-static PMEMORY_AREA MmIteratePrevNode(PMEMORY_AREA Node)
-{
-    if (Node->LeftChild != NULL)
-    {
-        Node = Node->LeftChild;
-        while (Node->RightChild != NULL)
-            Node = Node->RightChild;
-    }
-    else
-    {
-        PMEMORY_AREA TempNode = NULL;
-
-        do
-        {
-            /* Check if we're at the end of tree. */
-            if (Node->Parent == NULL)
-                return NULL;
-
-            TempNode = Node;
-            Node = Node->Parent;
-        }
-        while (TempNode == Node->LeftChild);
-    }
-    return Node;
-}
-
 PMEMORY_AREA NTAPI
 MmLocateMemoryAreaByAddress(
     PMMSUPPORT AddressSpace,
@@ -256,59 +150,6 @@
     return MemoryArea;
 }
-PMEMORY_AREA
-NTAPI
-MmLocateMemoryAreaByRegionOld(
-    PMMSUPPORT AddressSpace,
-    PVOID Address_,
-    ULONG_PTR Length)
-{
-    PMEMORY_AREA Node;
-    ULONG_PTR Address = (ULONG_PTR)Address_;
-    ULONG_PTR Extent = Address + Length;
-
-    /* Special case for empty tree. */
-    if (AddressSpace->WorkingSetExpansionLinks.Flink == NULL)
-        return NULL;
-
-    /* Traverse the tree from left to right. */
-    for (Node =
MmIterateFirstNode((PMEMORY_AREA)AddressSpace->WorkingSetExpansionLinks.Flink);
-            Node != NULL;
-            Node = MmIterateNextNode(Node))
-    {
-        if (MA_GetStartingAddress(Node) >= Address &&
-                MA_GetStartingAddress(Node) < Extent)
-        {
-            DPRINT("MmLocateMemoryAreaByRegion(%p - %p): %p - %p\n",
-                   Address, (ULONG_PTR)Address + Length, MA_GetStartingAddress(Node),
-                   MA_GetEndingAddress(Node));
-            return Node;
-        }
-        if (MA_GetEndingAddress(Node) > Address &&
-                MA_GetEndingAddress(Node) < Extent)
-        {
-            DPRINT("MmLocateMemoryAreaByRegion(%p - %p): %p - %p\n",
-                   Address, (ULONG_PTR)Address + Length, MA_GetStartingAddress(Node),
-                   MA_GetEndingAddress(Node));
-            return Node;
-        }
-        if (MA_GetStartingAddress(Node) <= Address &&
-                MA_GetEndingAddress(Node) >= Extent)
-        {
-            DPRINT("MmLocateMemoryAreaByRegion(%p - %p): %p - %p\n",
-                   Address, (ULONG_PTR)Address + Length, MA_GetStartingAddress(Node),
-                   MA_GetEndingAddress(Node));
-            return Node;
-        }
-        if (MA_GetStartingAddress(Node) >= Extent)
-        {
-            DPRINT("Finished MmLocateMemoryAreaByRegion() = NULL\n");
-            return NULL;
-        }
-    }
-
-    return NULL;
-}
 /**
  * @name MmCompressHelper
@@ -980,20 +821,8 @@
             return STATUS_ACCESS_VIOLATION;
         }
-        /* Check if this is a region owned by ARM3 */
-        if (MemoryArea->Type == MEMORY_AREA_OWNED_BY_ARM3)
-        {
-            /* ARM3 is inserting this MA to synchronize the old tree, use the old tree */
-            if (MmLocateMemoryAreaByRegionOld(AddressSpace,
-                                           *BaseAddress,
-                                           tmpLength) != NULL)
-            {
-                DPRINT("Memory area already occupied\n");
-                if (!(Type & MEMORY_AREA_STATIC)) ExFreePoolWithTag(MemoryArea,
TAG_MAREA);
-                return STATUS_CONFLICTING_ADDRESSES;
-            }
-        }
-        else
+        /* No need to check ARM3 owned memory areas, the range MUST be free */
+        if (MemoryArea->Type != MEMORY_AREA_OWNED_BY_ARM3)
         {
             if (MmLocateMemoryAreaByRegion(AddressSpace,
                                            *BaseAddress,