[PATCH] efi_selftest: fix guid comparison
Heinrich Schuchardt
xypron.glpk at gmx.de
Sat Jun 13 10:22:39 CEST 2026
On 6/11/26 11:29, Vincent Stehlé wrote:
> The `loaded image' efi selftest is comparing protocol GUIDs with the wrong
> polarity.
> This can be verified on the sandbox, where two protocols GUIDs are
> retrieved by the test from the image handle in the following order:
>
> 1. Loaded Image Device Path Protocol GUID
> 2. Loaded Image Protocol GUID
>
> The test matches on the first GUID, while it is in fact looking for the
> second one; fix the comparison polarity.
>
> While at it, use guidcmp() instead of memcmp() to spare the size parameter,
> and use the Loaded Image Protocol GUID definition from efi_api.h instead or
> redefining it locally.
Hello Vincent,
Thank you for catching the issue with the incorrect checkout for the
Loaded Image Protocol.
We never use U-Boot library functions in efi_selftest to allow
converting it into a standalone EFI application.
>
> Fixes: efe79a7c0de0 ("efi_selftest: test for loaded image protocol")
> Signed-off-by: Vincent Stehlé <vincent.stehle at arm.com>
> Cc: Heinrich Schuchardt <xypron.glpk at gmx.de>
> Cc: Ilias Apalodimas <ilias.apalodimas at linaro.org>
> Cc: Tom Rini <trini at konsulko.com>
> Cc: Alexander Graf <agraf at suse.de>
> ---
> lib/efi_selftest/efi_selftest_loaded_image.c | 7 ++-----
> 1 file changed, 2 insertions(+), 5 deletions(-)
>
> diff --git a/lib/efi_selftest/efi_selftest_loaded_image.c b/lib/efi_selftest/efi_selftest_loaded_image.c
> index 5889ab12617..48890a66db7 100644
> --- a/lib/efi_selftest/efi_selftest_loaded_image.c
> +++ b/lib/efi_selftest/efi_selftest_loaded_image.c
> @@ -9,9 +9,7 @@
>
> #include <efi_selftest.h>
>
> -static efi_guid_t loaded_image_protocol_guid =
> - EFI_GUID(0x5b1b31a1, 0x9562, 0x11d2,
> - 0x8e, 0x3f, 0x00, 0xa0, 0xc9, 0x69, 0x72, 0x3b);
> +static efi_guid_t loaded_image_protocol_guid = EFI_LOADED_IMAGE_PROTOCOL_GUID;
This change is not described in the commit message. With the change we
no longer test if efi_api.h has the correct value of the GUID. Why would
you prefer this?
> static struct efi_boot_services *boottime;
> efi_handle_t image_handle;
>
> @@ -60,8 +58,7 @@ static int execute(void)
> efi_st_printf("%u protocols installed on image handle\n",
> (unsigned int)protocol_buffer_count);
> for (i = 0; i < protocol_buffer_count; ++i) {
> - if (memcmp(protocol_buffer[i], &loaded_image_protocol_guid,
> - sizeof(efi_guid_t)))
> + if (!guidcmp(protocol_buffer[i], &loaded_image_protocol_guid))
> found = true;
Changing the polarity is correct.
Best regards
Heinrich
> }
> if (!found) {
More information about the U-Boot
mailing list