[NTOSKRNL:MM]
authorThomas Faber <thomas.faber@reactos.org>
Fri, 15 Jun 2012 07:27:45 +0000 (07:27 +0000)
committerThomas Faber <thomas.faber@reactos.org>
Fri, 15 Jun 2012 07:27:45 +0000 (07:27 +0000)
- Do not ignore pool tag in ExFreePoolWithTag when freeing to a lookaside list

svn path=/trunk/; revision=56737

reactos/ntoskrnl/mm/ARM3/expool.c

index ff1b2b2..032f4b7 100644 (file)
@@ -2150,6 +2150,15 @@ ExFreePoolWithTag(IN PVOID P,
                          BlockSize * POOL_BLOCK_SIZE,
                          Entry->PoolType - 1);
 
                          BlockSize * POOL_BLOCK_SIZE,
                          Entry->PoolType - 1);
 
+    //
+    // Check block tag
+    //
+    if (TagToFree && TagToFree != Tag)
+    {
+        DPRINT1("Freeing pool - invalid tag specified: %.4s != %.4s\n", (char*)&TagToFree, (char*)&Tag);
+        KeBugCheckEx(BAD_POOL_CALLER, 0x0A, (ULONG_PTR)P, Tag, TagToFree);
+    }
+
     //
     // Is this allocation small enough to have come from a lookaside list?
     //
     //
     // Is this allocation small enough to have come from a lookaside list?
     //
@@ -2200,15 +2209,6 @@ ExFreePoolWithTag(IN PVOID P,
     //
     OldIrql = ExLockPool(PoolDesc);
 
     //
     OldIrql = ExLockPool(PoolDesc);
 
-    //
-    // Check block tag
-    //
-    if (TagToFree && TagToFree != Entry->PoolTag)
-    {
-        DPRINT1("Freeing pool - invalid tag specified: %.4s != %.4s\n", (char*)&TagToFree, (char*)&Entry->PoolTag);
-        KeBugCheckEx(BAD_POOL_CALLER, 0x0A, (ULONG_PTR)P, Entry->PoolTag, TagToFree);
-    }
-
     //
     // Check if the next allocation is at the end of the page
     //
     //
     // Check if the next allocation is at the end of the page
     //