[PATCH 1/1] efi_loader: don't use EFI_LOADER_DATA internally

François-Frédéric Ozog ff at ozog.com
Tue Nov 29 16:41:43 CET 2022


Reviewed-by: François-Frédéric Ozog <ff at ozog.com>

I confirm the patch addresses the issue

Le 29/11/2022 16:04, « Heinrich Schuchardt » <heinrich.schuchardt at canonical.com> a écrit :

    Memory allocated by U-Boot for internal usage should be
    EFI_BOOT_SERVICES_DATA or _CODE or EFI_RUNTIME_SERVICES_DATA or _CODE.

    Reported-by: François-Frédéric Ozog <ff at ozog.com>
    Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt at canonical.com>
    ---
     cmd/efidebug.c              | 2 +-
     lib/efi_loader/efi_memory.c | 4 ++--
     2 files changed, 3 insertions(+), 3 deletions(-)

    diff --git a/cmd/efidebug.c b/cmd/efidebug.c
    index ef239bb34b..64104da130 100644
    --- a/cmd/efidebug.c
    +++ b/cmd/efidebug.c
    @@ -600,7 +600,7 @@ static int do_efi_show_memmap(struct cmd_tbl *cmdtp, int flag,
     	ret = efi_get_memory_map(&map_size, memmap, NULL, NULL, NULL);
     	if (ret == EFI_BUFFER_TOO_SMALL) {
     		map_size += sizeof(struct efi_mem_desc); /* for my own */
    -		ret = efi_allocate_pool(EFI_LOADER_DATA, map_size,
    +		ret = efi_allocate_pool(EFI_BOOT_SERVICES_DATA, map_size,
     					(void *)&memmap);
     		if (ret != EFI_SUCCESS)
     			return CMD_RET_FAILURE;
    diff --git a/lib/efi_loader/efi_memory.c b/lib/efi_loader/efi_memory.c
    index a17b426d11..0c336f98d2 100644
    --- a/lib/efi_loader/efi_memory.c
    +++ b/lib/efi_loader/efi_memory.c
    @@ -823,7 +823,7 @@ static void add_u_boot_and_runtime(void)
     		       uboot_stack_size) & ~EFI_PAGE_MASK;
     	uboot_pages = ((uintptr_t)map_sysmem(gd->ram_top - 1, 0) -
     		       uboot_start + EFI_PAGE_MASK) >> EFI_PAGE_SHIFT;
    -	efi_add_memory_map_pg(uboot_start, uboot_pages, EFI_LOADER_DATA,
    +	efi_add_memory_map_pg(uboot_start, uboot_pages, EFI_BOOT_SERVICES_DATA,
     			      false);

     #if defined(__aarch64__)
    @@ -857,7 +857,7 @@ int efi_memory_init(void)
     	/* Request a 32bit 64MB bounce buffer region */
     	uint64_t efi_bounce_buffer_addr = 0xffffffff;

    -	if (efi_allocate_pages(EFI_ALLOCATE_MAX_ADDRESS, EFI_LOADER_DATA,
    +	if (efi_allocate_pages(EFI_ALLOCATE_MAX_ADDRESS, EFI_BOOT_SERVICES_DATA,
     			       (64 * 1024 * 1024) >> EFI_PAGE_SHIFT,
     			       &efi_bounce_buffer_addr) != EFI_SUCCESS)
     		return -1;
    -- 
    2.37.2





More information about the U-Boot mailing list