]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdeModulePkg/Core/Dxe/Mem/Pool.c
MdeModulePkg/Core: fix guard page missing issue
[mirror_edk2.git] / MdeModulePkg / Core / Dxe / Mem / Pool.c
index df9a1d28dff50006bb4128238e09ffdb92d2f9de..1ff2061f7f71e9b7da4fafefc320a68323a6bd97 100644 (file)
@@ -642,15 +642,15 @@ CoreFreePoolPagesWithGuard (
   NoPagesGuarded = NoPages;\r
 \r
   AdjustMemoryF (&Memory, &NoPages);\r
+  //\r
+  // It's safe to unset Guard page inside memory lock because there should\r
+  // be no memory allocation occurred in updating memory page attribute at\r
+  // this point. And unsetting Guard page before free will prevent Guard\r
+  // page just freed back to pool from being allocated right away before\r
+  // marking it usable (from non-present to present).\r
+  //\r
+  UnsetGuardForMemory (MemoryGuarded, NoPagesGuarded);\r
   if (NoPages > 0) {\r
-    //\r
-    // It's safe to unset Guard page inside memory lock because there should\r
-    // be no memory allocation occurred in updating memory page attribute at\r
-    // this point. And unsetting Guard page before free will prevent Guard\r
-    // page just freed back to pool from being allocated right away before\r
-    // marking it usable (from non-present to present).\r
-    //\r
-    UnsetGuardForMemory (MemoryGuarded, NoPagesGuarded);\r
     CoreFreePoolPagesI (PoolType, Memory, NoPages);\r
   }\r
 }\r