[PATCH 1/3] efi_loader: correct handling of EFI binary return code
Ilias Apalodimas
ilias.apalodimas at linaro.org
Wed Mar 20 22:18:22 CET 2024
Hi Heinrich
On Sat, 16 Mar 2024 at 11:37, Heinrich Schuchardt
<heinrich.schuchardt at canonical.com> wrote:
>
> Running an EFI binary loaded via tftp using the bootefi command results in
> showing the usage help.
The commit message sounds a bit off. The real problem is removing
protocols from a non existent handle right?
The help message was fixed in a subsequent patch
With that fixed
Reviewed-by: Ilias Apalodimas <ilias.apalodimas at linaro.org>
>
> We should not try to remove protocol interfaces from a NULL handle.
>
> Fixes: 6422820ac3e5 ("efi_loader: split unrelated code from efi_bootmgr.c")
> Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt at canonical.com>
> ---
> lib/efi_loader/efi_bootbin.c | 16 +++++++++++-----
> 1 file changed, 11 insertions(+), 5 deletions(-)
>
> diff --git a/lib/efi_loader/efi_bootbin.c b/lib/efi_loader/efi_bootbin.c
> index 733cc1a61b5..b7910f78fb6 100644
> --- a/lib/efi_loader/efi_bootbin.c
> +++ b/lib/efi_loader/efi_bootbin.c
> @@ -125,7 +125,7 @@ efi_status_t efi_run_image(void *source_buffer, efi_uintn_t source_size)
> efi_handle_t mem_handle = NULL, handle;
> struct efi_device_path *file_path = NULL;
> struct efi_device_path *msg_path;
> - efi_status_t ret, ret2;
> + efi_status_t ret;
> u16 *load_options;
>
> if (!bootefi_device_path || !bootefi_image_path) {
> @@ -172,11 +172,17 @@ efi_status_t efi_run_image(void *source_buffer, efi_uintn_t source_size)
> ret = do_bootefi_exec(handle, load_options);
>
> out:
> - ret2 = efi_uninstall_multiple_protocol_interfaces(mem_handle,
> - &efi_guid_device_path,
> - file_path, NULL);
> + if (mem_handle) {
> + efi_status_t r;
> +
> + r = efi_uninstall_multiple_protocol_interfaces(
> + mem_handle, &efi_guid_device_path, file_path, NULL);
> + if (r != EFI_SUCCESS)
> + log_err("Uninstalling protocol interfaces failed\n");
> + }
> efi_free_pool(file_path);
> - return (ret != EFI_SUCCESS) ? ret : ret2;
> +
> + return ret;
> }
>
> /**
> --
> 2.43.0
>
More information about the U-Boot
mailing list