[edk2] [PATCH v2 3/5] MdeModulePkg/DxeCore: pass pool type to CoreFreePoolPages ()

Ard Biesheuvel posted 5 patches 7 years, 8 months ago
There is a newer version of this series
[edk2] [PATCH v2 3/5] MdeModulePkg/DxeCore: pass pool type to CoreFreePoolPages ()
Posted by Ard Biesheuvel 7 years, 8 months ago
In order to make it easier to manage memory permission attributes of
page allocations performed on behalf of the pool allocator, pass the
pool type when freeing pages. This way, we can easily check whether
the freed pages need to have their permission attributes changed.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
---
 MdeModulePkg/Core/Dxe/Mem/Imem.h | 2 ++
 MdeModulePkg/Core/Dxe/Mem/Page.c | 1 +
 MdeModulePkg/Core/Dxe/Mem/Pool.c | 5 +++--
 3 files changed, 6 insertions(+), 2 deletions(-)

diff --git a/MdeModulePkg/Core/Dxe/Mem/Imem.h b/MdeModulePkg/Core/Dxe/Mem/Imem.h
index fb53f95575f0..fde533100d37 100644
--- a/MdeModulePkg/Core/Dxe/Mem/Imem.h
+++ b/MdeModulePkg/Core/Dxe/Mem/Imem.h
@@ -77,12 +77,14 @@ CoreAllocatePoolPages (
 /**
   Internal function.  Frees pool pages allocated via AllocatePoolPages ()
 
+  @param  PoolType               The memory type of the pool pages
   @param  Memory                 The base address to free
   @param  NumberOfPages          The number of pages to free
 
 **/
 VOID
 CoreFreePoolPages (
+  IN EFI_MEMORY_TYPE        PoolType,
   IN EFI_PHYSICAL_ADDRESS   Memory,
   IN UINTN                  NumberOfPages
   );
diff --git a/MdeModulePkg/Core/Dxe/Mem/Page.c b/MdeModulePkg/Core/Dxe/Mem/Page.c
index bda4f6397e91..6330d41e7b3b 100644
--- a/MdeModulePkg/Core/Dxe/Mem/Page.c
+++ b/MdeModulePkg/Core/Dxe/Mem/Page.c
@@ -1871,6 +1871,7 @@ CoreAllocatePoolPages (
 **/
 VOID
 CoreFreePoolPages (
+  IN EFI_MEMORY_TYPE        PoolType,
   IN EFI_PHYSICAL_ADDRESS   Memory,
   IN UINTN                  NumberOfPages
   )
diff --git a/MdeModulePkg/Core/Dxe/Mem/Pool.c b/MdeModulePkg/Core/Dxe/Mem/Pool.c
index 7afd2d312c1d..9e15e0cfb5b2 100644
--- a/MdeModulePkg/Core/Dxe/Mem/Pool.c
+++ b/MdeModulePkg/Core/Dxe/Mem/Pool.c
@@ -624,7 +624,7 @@ CoreFreePoolI (
     //
     NoPages = EFI_SIZE_TO_PAGES(Size) + EFI_SIZE_TO_PAGES (Granularity) - 1;
     NoPages &= ~(UINTN)(EFI_SIZE_TO_PAGES (Granularity) - 1);
-    CoreFreePoolPages ((EFI_PHYSICAL_ADDRESS) (UINTN) Head, NoPages);
+    CoreFreePoolPages (Pool->MemoryType, (EFI_PHYSICAL_ADDRESS) (UINTN) Head, NoPages);
 
   } else {
 
@@ -680,7 +680,8 @@ CoreFreePoolI (
         //
         // Free the page
         //
-        CoreFreePoolPages ((EFI_PHYSICAL_ADDRESS) (UINTN)NewPage, EFI_SIZE_TO_PAGES (Granularity));
+        CoreFreePoolPages (Pool->MemoryType, (EFI_PHYSICAL_ADDRESS) (UINTN)NewPage,
+          EFI_SIZE_TO_PAGES (Granularity));
       }
     }
   }
-- 
2.7.4

_______________________________________________
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel