efi_loader: return the correct error in efi_bootmgr_release_uridp()

There's currently a chance for this function to overwrite an error if
one occurred and the subsequent call to
efi_uninstall_multiple_protocol_interfaces() succedded. Although this
is an EFI event and we can't do much let's at least set and return
the correct error

Signed-off-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
Reviewed-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
Ilias Apalodimas 2024-08-12 23:56:38 +03:00 committed by Heinrich Schuchardt
parent 4a1eeccde6
commit 063b4ed07d

View file

@ -388,6 +388,7 @@ err:
efi_status_t efi_bootmgr_release_uridp(struct uridp_context *ctx)
{
efi_status_t ret = EFI_SUCCESS;
efi_status_t ret2 = EFI_SUCCESS;
if (!ctx)
return ret;
@ -407,17 +408,18 @@ efi_status_t efi_bootmgr_release_uridp(struct uridp_context *ctx)
/* cleanup for PE-COFF image */
if (ctx->mem_handle) {
ret = efi_uninstall_multiple_protocol_interfaces(
ctx->mem_handle, &efi_guid_device_path, ctx->loaded_dp,
NULL);
if (ret != EFI_SUCCESS)
ret2 = efi_uninstall_multiple_protocol_interfaces(ctx->mem_handle,
&efi_guid_device_path,
ctx->loaded_dp,
NULL);
if (ret2 != EFI_SUCCESS)
log_err("Uninstall device_path protocol failed\n");
}
efi_free_pool(ctx->loaded_dp);
free(ctx);
return ret;
return ret == EFI_SUCCESS ? ret2 : ret;
}
/**