[PATCH 5/8 v2] efi_loader: bootmgr: Use get_var from efi_helper file

Heinrich Schuchardt xypron.glpk at gmx.de
Wed Dec 30 20:32:20 CET 2020


On 12/30/20 4:07 PM, Ilias Apalodimas wrote:
> A few patches before we introduced a file which includes the get_var_efi()
> function defined in the efi bootmanager.
> So let's replace it here and use the common function as much as we can.
>
> Signed-off-by: Ilias Apalodimas <ilias.apalodimas at linaro.org>
> ---
>   lib/efi_loader/Makefile      |  2 +-
>   lib/efi_loader/efi_bootmgr.c | 37 +++---------------------------------
>   2 files changed, 4 insertions(+), 35 deletions(-)
>
> diff --git a/lib/efi_loader/Makefile b/lib/efi_loader/Makefile
> index cd4b252a417c..a47160189c42 100644
> --- a/lib/efi_loader/Makefile
> +++ b/lib/efi_loader/Makefile
> @@ -21,7 +21,7 @@ targets += helloworld.o
>   endif
>
>   obj-$(CONFIG_CMD_BOOTEFI_HELLO) += helloworld_efi.o
> -obj-y += efi_bootmgr.o
> +obj-y += efi_helper.o efi_bootmgr.o
>   obj-y += efi_boottime.o
>   obj-y += efi_console.o
>   obj-y += efi_device_path.o
> diff --git a/lib/efi_loader/efi_bootmgr.c b/lib/efi_loader/efi_bootmgr.c
> index 61dc72a23da8..0221fd1261b3 100644
> --- a/lib/efi_loader/efi_bootmgr.c
> +++ b/lib/efi_loader/efi_bootmgr.c
> @@ -11,6 +11,7 @@
>   #include <charset.h>
>   #include <log.h>
>   #include <malloc.h>
> +#include <efi_helper.h>
>   #include <efi_loader.h>
>   #include <efi_variable.h>
>   #include <asm/unaligned.h>
> @@ -165,38 +166,6 @@ unsigned long efi_serialize_load_option(struct efi_load_option *lo, u8 **data)
>   	return size;
>   }
>
> -/**
> - * get_var() - get UEFI variable
> - *
> - * It is the caller's duty to free the returned buffer.
> - *
> - * @name:	name of variable
> - * @vendor:	vendor GUID of variable
> - * @size:	size of allocated buffer
> - * Return:	buffer with variable data or NULL
> - */
> -static void *get_var(u16 *name, const efi_guid_t *vendor,
> -		     efi_uintn_t *size)
> -{
> -	efi_status_t ret;
> -	void *buf = NULL;
> -
> -	*size = 0;
> -	ret = efi_get_variable_int(name, vendor, NULL, size, buf, NULL);
> -	if (ret == EFI_BUFFER_TOO_SMALL) {
> -		buf = malloc(*size);
> -		ret = efi_get_variable_int(name, vendor, NULL, size, buf, NULL);
> -	}
> -
> -	if (ret != EFI_SUCCESS) {
> -		free(buf);
> -		*size = 0;
> -		return NULL;
> -	}
> -
> -	return buf;
> -}
> -
>   /**
>    * try_load_entry() - try to load image for boot option
>    *
> @@ -224,7 +193,7 @@ static efi_status_t try_load_entry(u16 n, efi_handle_t *handle,
>   	varname[6] = hexmap[(n & 0x00f0) >> 4];
>   	varname[7] = hexmap[(n & 0x000f) >> 0];
>
> -	load_option = get_var(varname, &efi_global_variable_guid, &size);
> +	load_option = get_var_efi(varname, &efi_global_variable_guid, &size);
>   	if (!load_option)
>   		return EFI_LOAD_ERROR;
>
> @@ -336,7 +305,7 @@ efi_status_t efi_bootmgr_load(efi_handle_t *handle, void **load_options)
>   	}
>
>   	/* BootOrder */
> -	bootorder = get_var(L"BootOrder", &efi_global_variable_guid, &size);
> +	bootorder = get_var_efi(L"BootOrder", &efi_global_variable_guid, &size);

efi_var_get() would be more in line with our naming of other UEFI
related functions.

Best regards

Heinrich

>   	if (!bootorder) {
>   		log_info("BootOrder not defined\n");
>   		ret = EFI_NOT_FOUND;
>



More information about the U-Boot mailing list