From 5a2e030f733752a8029bccfa7d28679e103540e0 Mon Sep 17 00:00:00 2001 From: Dov Murik Date: Mon, 28 Jun 2021 10:51:06 +0000 Subject: [PATCH] OvmfPkg/GenericQemuLoadImageLib: plug cmdline blob leak on success When QemuLoadKernelImage() ends successfully, the command-line blob is not freed, even though it is not used elsewhere (its content is already copied to KernelLoadedImage->LoadOptions). The memory leak bug was introduced in commit ddd2be6b0026 ("OvmfPkg: provide a generic implementation of QemuLoadImageLib", 2020-03-05). Cc: Ard Biesheuvel Cc: Jordan Justen Cc: James Bottomley Cc: Tobin Feldman-Fitzthum Reported-by: Laszlo Ersek Fixes: ddd2be6b0026abcd0f819b3915fc80c3de81dd62 Signed-off-by: Dov Murik Message-Id: <20210628105110.379951-2-dovmurik@linux.ibm.com> Reviewed-by: Laszlo Ersek Tested-by: Laszlo Ersek --- .../GenericQemuLoadImageLib/GenericQemuLoadImageLib.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/OvmfPkg/Library/GenericQemuLoadImageLib/GenericQemuLoadImageLib.c b/OvmfPkg/Library/GenericQemuLoadImageLib/GenericQemuLoadImageLib.c index 114db7e844..8a29976ae1 100644 --- a/OvmfPkg/Library/GenericQemuLoadImageLib/GenericQemuLoadImageLib.c +++ b/OvmfPkg/Library/GenericQemuLoadImageLib/GenericQemuLoadImageLib.c @@ -193,14 +193,16 @@ QemuLoadKernelImage ( } *ImageHandle = KernelImageHandle; - return EFI_SUCCESS; + Status = EFI_SUCCESS; FreeCommandLine: if (CommandLineSize > 0) { FreePool (CommandLine); } UnloadImage: - gBS->UnloadImage (KernelImageHandle); + if (EFI_ERROR (Status)) { + gBS->UnloadImage (KernelImageHandle); + } return Status; }