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; }