]> git.ipfire.org Git - thirdparty/u-boot.git/commitdiff
efi_loader: fix specific LoadImage() return code
authorVincent Stehlé <vincent.stehle@arm.com>
Mon, 16 Feb 2026 11:30:16 +0000 (12:30 +0100)
committerHeinrich Schuchardt <heinrich.schuchardt@canonical.com>
Fri, 27 Feb 2026 11:14:56 +0000 (12:14 +0100)
When the LoadImage() UEFI function is called with both its SourceBuffer and
DevicePath input arguments equal to NULL, it must return EFI_NOT_FOUND [1].
However, it does return EFI_INVALID_PARAMETER instead; fix it.

Link: https://uefi.org/specs/UEFI/2.11/07_Services_Boot_Services.html#efi-boot-services-loadimage
Reported-by: Sathisha Shivaramappa <sathisha.shivaramappa@arm.com>
Signed-off-by: Vincent Stehlé <vincent.stehle@arm.com>
Cc: Heinrich Schuchardt <xypron.glpk@gmx.de>
Cc: Ilias Apalodimas <ilias.apalodimas@linaro.org>
Cc: Tom Rini <trini@konsulko.com>
lib/efi_loader/efi_boottime.c

index b424d924896743c31a4457e99ab73146fc2c799e..de57823bd44d90eb9964417e1c3da35bbd1c793c 100644 (file)
@@ -2096,8 +2096,12 @@ efi_status_t EFIAPI efi_load_image(bool boot_policy,
        EFI_ENTRY("%d, %p, %pD, %p, %zu, %p", boot_policy, parent_image,
                  file_path, source_buffer, source_size, image_handle);
 
-       if (!image_handle || (!source_buffer && !file_path) ||
-           !efi_search_obj(parent_image) ||
+       if (!source_buffer && !file_path) {
+               ret = EFI_NOT_FOUND;
+               goto error;
+       }
+
+       if (!image_handle || !efi_search_obj(parent_image) ||
            /* The parent image handle must refer to a loaded image */
            !parent_image->type) {
                ret = EFI_INVALID_PARAMETER;