From e508c6c08ab6a97ba8c34a156e17bcd9600104dd Mon Sep 17 00:00:00 2001 From: Phil Noh Date: Wed, 4 Dec 2024 12:20:35 -0600 Subject: [PATCH] MdeModulePkg/DxeIplPeim: Free scratch buffer after FV extraction The scratch buffer (EfiBootServicesData) is assigned to extract DXE FVs that are compressed. The matching decompression library returns the buffer size as below. The buffer is no longer used after completing extraction. Need to free the buffer to optimize memory allocation and usage. BaseUefiDecompressLib : sizeof (SCRATCH_DATA) LzmaCustomDecompressLib : SCRATCH_BUFFER_REQUEST_SIZE (64KB) BrotliCustomDecompressLib : From EncodeData header (usually, xxMB checked) In case of Brotli decompression, it is found that a big chunk of memory is required, based on EncodeData header. (e.g. a 4MB compressed FV reports about 39MB scratch size) Signed-off-by: Phil Noh --- MdeModulePkg/Core/DxeIplPeim/DxeLoad.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/MdeModulePkg/Core/DxeIplPeim/DxeLoad.c b/MdeModulePkg/Core/DxeIplPeim/DxeLoad.c index 933b245036..b9fe70332e 100644 --- a/MdeModulePkg/Core/DxeIplPeim/DxeLoad.c +++ b/MdeModulePkg/Core/DxeIplPeim/DxeLoad.c @@ -636,6 +636,11 @@ CustomGuidedSectionExtract ( ScratchBuffer, AuthenticationStatus ); + + if (ScratchBuffer != NULL) { + FreePages (ScratchBuffer, EFI_SIZE_TO_PAGES (ScratchBufferSize)); + } + if (EFI_ERROR (Status)) { // // Decode failed