Used MmFreeVirtualMemory in MmDeleteTeb because MmFreeMemoryAreaByPtr doesn't free...
authorHartmut Birr <osexpert@googlemail.com>
Mon, 1 Aug 2005 00:06:18 +0000 (00:06 +0000)
committerHartmut Birr <osexpert@googlemail.com>
Mon, 1 Aug 2005 00:06:18 +0000 (00:06 +0000)
svn path=/trunk/; revision=16930

reactos/ntoskrnl/mm/process.c

index d7c987e..d8b85d9 100644 (file)
@@ -103,49 +103,23 @@ MmDeleteKernelStack(PVOID Stack,
     MmUnlockAddressSpace(MmGetKernelAddressSpace());
 }
 
-VOID
-MiFreePebPage(PVOID Context,
-              MEMORY_AREA* MemoryArea,
-              PVOID Address,
-              PFN_TYPE Page,
-              SWAPENTRY SwapEntry,
-              BOOLEAN Dirty)
-{
-    PEPROCESS Process = (PEPROCESS)Context;
-
-    if (Page != 0)
-    {
-        SWAPENTRY SavedSwapEntry;
-        SavedSwapEntry = MmGetSavedSwapEntryPage(Page);
-        if (SavedSwapEntry != 0)
-        {
-            MmFreeSwapPage(SavedSwapEntry);
-            MmSetSavedSwapEntryPage(Page, 0);
-        }
-        MmDeleteRmap(Page, Process, Address);
-        MmReleasePageMemoryConsumer(MC_USER, Page);
-    }
-    else if (SwapEntry != 0)
-    {
-        MmFreeSwapPage(SwapEntry);
-    }
-}
-
 VOID
 STDCALL
 MmDeleteTeb(PEPROCESS Process,
             PTEB Teb)
 {
     PMADDRESS_SPACE ProcessAddressSpace = &Process->AddressSpace;
+    PMEMORY_AREA MemoryArea;
 
     /* Lock the Address Space */
     MmLockAddressSpace(ProcessAddressSpace);
-
-    /* Delete the Stack */
-    MmFreeMemoryAreaByPtr(ProcessAddressSpace,
-                          Teb,
-                          MiFreePebPage,
-                          Process);
+    
+    MemoryArea = MmLocateMemoryAreaByAddress(ProcessAddressSpace, (PVOID)Teb);
+    if (MemoryArea)
+    {
+       /* Delete the Teb */
+       MmFreeVirtualMemory(Process, MemoryArea);
+    }
 
     /* Unlock the Address Space */
     MmUnlockAddressSpace(ProcessAddressSpace);