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 <Phil.Noh@amd.com>
This commit is contained in:
Phil Noh 2024-12-04 12:20:35 -06:00 committed by mergify[bot]
parent 73570d8ab6
commit e508c6c08a
1 changed files with 5 additions and 0 deletions

View File

@ -636,6 +636,11 @@ CustomGuidedSectionExtract (
ScratchBuffer,
AuthenticationStatus
);
if (ScratchBuffer != NULL) {
FreePages (ScratchBuffer, EFI_SIZE_TO_PAGES (ScratchBufferSize));
}
if (EFI_ERROR (Status)) {
//
// Decode failed