[PATCH 1/3] efi_loader: all variable attributes are 32bit
Ilias Apalodimas
ilias.apalodimas at linaro.org
Wed Apr 3 17:35:44 CEST 2024
On Wed, 3 Apr 2024 at 18:34, Heinrich Schuchardt
<heinrich.schuchardt at canonical.com> wrote:
>
> GetVariable() and SetVariable() use an uint32_t value for attributes.
> The UEFI specification defines the related constants as 32bit.
>
> Add the missing EFI_VARIABLE_ENHANCED_AUTHENTICATED_ACCESS constant.
>
> Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt at canonical.com>
> ---
> include/efi.h | 15 ++++++++-------
> lib/efi_loader/efi_var_common.c | 2 +-
> lib/efi_loader/efi_variable.c | 4 ++--
> 3 files changed, 11 insertions(+), 10 deletions(-)
>
> diff --git a/include/efi.h b/include/efi.h
> index f0e5faa7549..62cfb993d2e 100644
> --- a/include/efi.h
> +++ b/include/efi.h
> @@ -492,13 +492,14 @@ extern char _binary_u_boot_bin_start[], _binary_u_boot_bin_end[];
> /*
> * Variable Attributes
> */
> -#define EFI_VARIABLE_NON_VOLATILE 0x0000000000000001
> -#define EFI_VARIABLE_BOOTSERVICE_ACCESS 0x0000000000000002
> -#define EFI_VARIABLE_RUNTIME_ACCESS 0x0000000000000004
> -#define EFI_VARIABLE_HARDWARE_ERROR_RECORD 0x0000000000000008
> -#define EFI_VARIABLE_AUTHENTICATED_WRITE_ACCESS 0x0000000000000010
> -#define EFI_VARIABLE_TIME_BASED_AUTHENTICATED_WRITE_ACCESS 0x0000000000000020
> -#define EFI_VARIABLE_APPEND_WRITE 0x0000000000000040
> +#define EFI_VARIABLE_NON_VOLATILE 0x00000001
> +#define EFI_VARIABLE_BOOTSERVICE_ACCESS 0x00000002
> +#define EFI_VARIABLE_RUNTIME_ACCESS 0x00000004
> +#define EFI_VARIABLE_HARDWARE_ERROR_RECORD 0x00000008
> +#define EFI_VARIABLE_AUTHENTICATED_WRITE_ACCESS 0x00000010
> +#define EFI_VARIABLE_TIME_BASED_AUTHENTICATED_WRITE_ACCESS 0x00000020
> +#define EFI_VARIABLE_APPEND_WRITE 0x00000040
> +#define EFI_VARIABLE_ENHANCED_AUTHENTICATED_ACCESS 0x00000080
>
> #define EFI_VARIABLE_MASK (EFI_VARIABLE_NON_VOLATILE | \
> EFI_VARIABLE_BOOTSERVICE_ACCESS | \
> diff --git a/lib/efi_loader/efi_var_common.c b/lib/efi_loader/efi_var_common.c
> index d528747f3fb..16b2c3d4882 100644
> --- a/lib/efi_loader/efi_var_common.c
> +++ b/lib/efi_loader/efi_var_common.c
> @@ -99,7 +99,7 @@ efi_status_t EFIAPI efi_set_variable(u16 *variable_name,
> data_size, data);
>
> /* Make sure that the EFI_VARIABLE_READ_ONLY flag is not set */
> - if (attributes & ~(u32)EFI_VARIABLE_MASK)
> + if (attributes & ~EFI_VARIABLE_MASK)
> ret = EFI_INVALID_PARAMETER;
> else
> ret = efi_set_variable_int(variable_name, vendor, attributes,
> diff --git a/lib/efi_loader/efi_variable.c b/lib/efi_loader/efi_variable.c
> index 40f7a0fb10d..efe17d98f5a 100644
> --- a/lib/efi_loader/efi_variable.c
> +++ b/lib/efi_loader/efi_variable.c
> @@ -259,7 +259,7 @@ efi_status_t efi_set_variable_int(const u16 *variable_name,
> /* check if a variable exists */
> var = efi_var_mem_find(vendor, variable_name, NULL);
> append = !!(attributes & EFI_VARIABLE_APPEND_WRITE);
> - attributes &= ~(u32)EFI_VARIABLE_APPEND_WRITE;
> + attributes &= ~EFI_VARIABLE_APPEND_WRITE;
> delete = !append && (!data_size || !attributes);
>
> /* check attributes */
> @@ -384,7 +384,7 @@ efi_status_t efi_query_variable_info_int(u32 attributes,
> EFI_VARIABLE_RUNTIME_ACCESS)
> return EFI_INVALID_PARAMETER;
>
> - if (attributes & ~(u32)EFI_VARIABLE_MASK)
> + if (attributes & ~EFI_VARIABLE_MASK)
> return EFI_INVALID_PARAMETER;
>
> *maximum_variable_storage_size = EFI_VAR_BUF_SIZE -
> --
> 2.43.0
>
Reviewed-by: Ilias Apalodimas <ilias.apalodimas at linaro.org>
More information about the U-Boot
mailing list