[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