Re: [PATCH 2/2] efi/libstub: Synchronize instruction cache after kernel relocation

From: Huacai Chen

Date: Mon Apr 27 2026 - 04:09:23 EST


On Mon, Apr 27, 2026 at 11:45 AM WANG Rui <r@xxxxxx> wrote:
>
> The relocated kernel image is copied to its new location using memcpy().
> On architectures with separate instruction and data caches, the copied
> instructions may remain stale in the instruction cache, leading to the
> execution of outdated contents.
>
> Call efi_cache_sync_image() after the relocation copy to ensure the
> instruction cache is synchronized with the updated memory contents before
> control is transferred to the relocated kernel.
>
> Signed-off-by: WANG Rui <r@xxxxxx>
Reviewed-by: Huacai Chen <chenhuacai@xxxxxxxxxxx>

> ---
> drivers/firmware/efi/libstub/relocate.c | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/drivers/firmware/efi/libstub/relocate.c b/drivers/firmware/efi/libstub/relocate.c
> index d4264bfb6dc1..913b425d089d 100644
> --- a/drivers/firmware/efi/libstub/relocate.c
> +++ b/drivers/firmware/efi/libstub/relocate.c
> @@ -158,6 +158,7 @@ efi_status_t efi_relocate_kernel(unsigned long *image_addr,
> * have been allocated by UEFI, so we can safely use memcpy.
> */
> memcpy((void *)new_addr, (void *)cur_image_addr, image_size);
> + efi_cache_sync_image(new_addr, image_size);
>
> /* Return the new address of the relocated image. */
> *image_addr = new_addr;
> --
> 2.54.0
>