loader/efi/chainloader: Use shim loader image handle where available

Not reusing these handles will result in image measurements showing up
twice in the event log.

Signed-off-by: Mate Kukri <mate.kukri@canonical.com>
Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
This commit is contained in:
Mate Kukri 2025-07-08 21:21:16 +01:00 committed by Daniel Kiper
parent e31d0cd7fb
commit 1b9a84e63b

View File

@ -33,6 +33,7 @@
#include <grub/efi/efi.h> #include <grub/efi/efi.h>
#include <grub/efi/disk.h> #include <grub/efi/disk.h>
#include <grub/efi/memory.h> #include <grub/efi/memory.h>
#include <grub/efi/sb.h>
#include <grub/command.h> #include <grub/command.h>
#include <grub/i18n.h> #include <grub/i18n.h>
#include <grub/net.h> #include <grub/net.h>
@ -337,16 +338,20 @@ grub_cmd_chainloader (grub_command_t cmd __attribute__ ((unused)),
} }
#endif #endif
status = grub_efi_load_image (0, grub_efi_image_handle, file_path, image_handle = grub_efi_get_last_verified_image_handle ();
boot_image, size, &image_handle); if (image_handle == NULL)
if (status != GRUB_EFI_SUCCESS)
{ {
if (status == GRUB_EFI_OUT_OF_RESOURCES) status = grub_efi_load_image (0, grub_efi_image_handle, file_path,
grub_error (GRUB_ERR_OUT_OF_MEMORY, "out of resources"); boot_image, size, &image_handle);
else if (status != GRUB_EFI_SUCCESS)
grub_error (GRUB_ERR_BAD_OS, "cannot load image"); {
if (status == GRUB_EFI_OUT_OF_RESOURCES)
grub_error (GRUB_ERR_OUT_OF_MEMORY, "out of resources");
else
grub_error (GRUB_ERR_BAD_OS, "cannot load image");
goto fail; goto fail;
}
} }
/* LoadImage does not set a device handler when the image is /* LoadImage does not set a device handler when the image is