diff --git a/OvmfPkg/Library/X86QemuLoadImageLib/X86QemuLoadImageLib.c b/OvmfPkg/Library/X86QemuLoadImageLib/X86QemuLoadImageLib.c index 1177582ab0..6b1e7e6490 100644 --- a/OvmfPkg/Library/X86QemuLoadImageLib/X86QemuLoadImageLib.c +++ b/OvmfPkg/Library/X86QemuLoadImageLib/X86QemuLoadImageLib.c @@ -446,14 +446,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; }