[PATCH 1/1] efi_selftest: enhance LoadImage test

Andrew Goodbody andrew.goodbody at linaro.org
Mon Dec 15 11:51:08 CET 2025


On 15/12/2025 10:45, Ilias Apalodimas wrote:
> On Sun, 14 Dec 2025 at 13:09, Heinrich Schuchardt
> <heinrich.schuchardt at canonical.com> wrote:
>>
>> Check that only a file-system installed on a handle for thethe
> 
> Typo here, please fix it on merge. Also can you expand the commit
> message a bit, explaining that load_image will eventually call
> efi_dp_find_obj() catching errors in that?
> 
>> device-patch node immediately preceding the file path node is

And a typo here I think. s/patch/path/

Andrew

>> used for LoadImage().
>>
>> The test can be run with
>>
>>      setenv efi_selftest load image from file
>>      bootefi selftest
>>
>> Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt at canonical.com>
>> ---
>> The addtional test succeeds with current U-Boot but fails
>> after applying
>>
>> [PATCH v2] efi_loader: Trigger capsule updates with automatically generated boot options
>> https://lore.kernel.org/u-boot/20251208151503.1681988-1-ilias.apalodimas@linaro.org/
>> ---
> 
> Reviewed-by: Ilias Apalodimas <ilias.apalodimas at linaro.org>
> 
>>   lib/efi_selftest/efi_selftest_loadimage.c | 45 +++++++++++++++++++++++
>>   1 file changed, 45 insertions(+)
>>
>> diff --git a/lib/efi_selftest/efi_selftest_loadimage.c b/lib/efi_selftest/efi_selftest_loadimage.c
>> index 24548f1ae63..967eaa58c69 100644
>> --- a/lib/efi_selftest/efi_selftest_loadimage.c
>> +++ b/lib/efi_selftest/efi_selftest_loadimage.c
>> @@ -125,6 +125,44 @@ static struct {
>>          }
>>   };
>>
>> +/* Incorrect file device path */
>> +static struct {
>> +       struct efi_device_path_vendor vendor;
>> +       struct efi_device_path_controller ctrl;
>> +       struct efi_device_path path;
>> +       u16 file[sizeof(FILE_NAME)];
>> +       struct efi_device_path end;
>> +} __packed dp_file2 = {
>> +       .vendor = {
>> +               .dp = {
>> +                       .type = DEVICE_PATH_TYPE_HARDWARE_DEVICE,
>> +                       .sub_type = DEVICE_PATH_SUB_TYPE_VENDOR,
>> +                       .length = sizeof(struct efi_device_path_vendor),
>> +               },
>> +               .guid = EFI_GUID(0x4f9a0ebf, 0xa179, 0x88a6, 0x25, 0x68,
>> +                                0x10, 0x72, 0xb1, 0x93, 0x51, 0x71),
>> +       },
>> +       .ctrl = {
>> +               .dp = {
>> +                       .type = DEVICE_PATH_TYPE_HARDWARE_DEVICE,
>> +                       .sub_type = DEVICE_PATH_SUB_TYPE_CONTROLLER,
>> +                       .length = sizeof(struct efi_device_path_controller),
>> +               },
>> +               .controller_number = 1,
>> +       },
>> +       .path = {
>> +               .type = DEVICE_PATH_TYPE_MEDIA_DEVICE,
>> +               .sub_type = DEVICE_PATH_SUB_TYPE_FILE_PATH,
>> +               .length = sizeof(struct efi_device_path) + sizeof(dp_file.file),
>> +       },
>> +       .file = FILE_NAME,
>> +       .end = {
>> +               .type = DEVICE_PATH_TYPE_END,
>> +               .sub_type = DEVICE_PATH_SUB_TYPE_END,
>> +               .length = sizeof(struct efi_device_path),
>> +       }
>> +};
>> +
>>   /* File system info */
>>   static struct file_system_info priv_file_system_info = {
>>          {
>> @@ -517,6 +555,13 @@ static int execute(void)
>>                  return EFI_ST_FAILURE;
>>          }
>>
>> +       ret = boottime->load_image(false, handle_image, &dp_file2.vendor.dp,
>> +                                  NULL, 0, &handle);
>> +       if (ret == EFI_SUCCESS) {
>> +               efi_st_error("Invalid file path accepted\n");
>> +               return EFI_ST_FAILURE;
>> +       }
>> +
>>          return EFI_ST_SUCCESS;
>>   }
>>
>> --
>> 2.51.0
>>



More information about the U-Boot mailing list