[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