efi_loader: all variable attributes are 32bit
authorHeinrich Schuchardt <heinrich.schuchardt@canonical.com>
Wed, 3 Apr 2024 15:33:33 +0000 (17:33 +0200)
committerHeinrich Schuchardt <heinrich.schuchardt@canonical.com>
Mon, 8 Apr 2024 11:03:11 +0000 (13:03 +0200)
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@canonical.com>
Reviewed-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
include/efi.h
lib/efi_loader/efi_var_common.c
lib/efi_loader/efi_variable.c

index f0e5faa..62cfb99 100644 (file)
@@ -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 | \
index d528747..16b2c3d 100644 (file)
@@ -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,
index d1db7ad..8f55382 100644 (file)
@@ -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 */
@@ -398,7 +398,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 -