
On Sat, Oct 15, 2022 at 01:22:28PM +0200, Heinrich Schuchardt wrote:
- don't use EFI_CALL() for variable services
- don't use runtime pointer to access exported function
Signed-off-by: Heinrich Schuchardt heinrich.schuchardt@canonical.com
cmd/efidebug.c | 47 +++++++++++++++++++++-------------------------- 1 file changed, 21 insertions(+), 26 deletions(-)
diff --git a/cmd/efidebug.c b/cmd/efidebug.c index 4b49f30d93..ef239bb34b 100644 --- a/cmd/efidebug.c +++ b/cmd/efidebug.c @@ -25,7 +25,6 @@ #include <linux/err.h>
#define BS systab.boottime -#define RT systab.runtime
#ifdef CONFIG_EFI_HAVE_CAPSULE_SUPPORT /** @@ -76,7 +75,7 @@ static int do_efi_capsule_update(struct cmd_tbl *cmdtp, int flag, capsule->capsule_image_size); }
- ret = EFI_CALL(RT->update_capsule(&capsule, 1, 0));
- ret = EFI_CALL(efi_update_capsule(&capsule, 1, 0)); if (ret) { printf("Cannot handle a capsule at %p\n", capsule); return CMD_RET_FAILURE;
@@ -995,17 +994,16 @@ static void show_efi_boot_opt(u16 *varname16) efi_status_t ret;
size = 0;
- ret = EFI_CALL(efi_get_variable(varname16, &efi_global_variable_guid,
NULL, &size, NULL));
- ret = efi_get_variable_int(varname16, &efi_global_variable_guid,
if (ret == EFI_BUFFER_TOO_SMALL) { data = malloc(size); if (!data) { printf("ERROR: Out of memory\n"); return; }NULL, &size, NULL, NULL);
ret = EFI_CALL(efi_get_variable(varname16,
&efi_global_variable_guid,
NULL, &size, data));
ret = efi_get_variable_int(varname16, &efi_global_variable_guid,
if (ret == EFI_SUCCESS) show_efi_boot_opt_data(varname16, data, &size); free(data);NULL, &size, data, NULL);
@@ -1057,8 +1055,7 @@ static int do_efi_boot_dump(struct cmd_tbl *cmdtp, int flag, var_name16[0] = 0; for (;;) { size = buf_size;
ret = EFI_CALL(efi_get_next_variable_name(&size, var_name16,
&guid));
if (ret == EFI_NOT_FOUND) break; if (ret == EFI_BUFFER_TOO_SMALL) {ret = efi_get_next_variable_name_int(&size, var_name16, &guid);
@@ -1069,9 +1066,8 @@ static int do_efi_boot_dump(struct cmd_tbl *cmdtp, int flag, return CMD_RET_FAILURE; } var_name16 = p;
ret = EFI_CALL(efi_get_next_variable_name(&size,
var_name16,
&guid));
ret = efi_get_next_variable_name_int(&size, var_name16,
} if (ret != EFI_SUCCESS) { free(var_name16);&guid);
@@ -1114,8 +1110,8 @@ static int show_efi_boot_order(void) efi_status_t ret;
size = 0;
- ret = EFI_CALL(efi_get_variable(u"BootOrder", &efi_global_variable_guid,
NULL, &size, NULL));
- ret = efi_get_variable_int(u"BootOrder", &efi_global_variable_guid,
if (ret != EFI_BUFFER_TOO_SMALL) { if (ret == EFI_NOT_FOUND) { printf("BootOrder not defined\n");NULL, &size, NULL, NULL);
@@ -1129,8 +1125,8 @@ static int show_efi_boot_order(void) printf("ERROR: Out of memory\n"); return CMD_RET_FAILURE; }
- ret = EFI_CALL(efi_get_variable(u"BootOrder", &efi_global_variable_guid,
NULL, &size, bootorder));
- ret = efi_get_variable_int(u"BootOrder", &efi_global_variable_guid,
if (ret != EFI_SUCCESS) { ret = CMD_RET_FAILURE; goto out;NULL, &size, bootorder, NULL);
@@ -1142,9 +1138,9 @@ static int show_efi_boot_order(void) "Boot", bootorder[i]);
size = 0;
ret = EFI_CALL(efi_get_variable(var_name16,
&efi_global_variable_guid, NULL,
&size, NULL));
ret = efi_get_variable_int(var_name16,
&efi_global_variable_guid, NULL,
if (ret != EFI_BUFFER_TOO_SMALL) { printf("%2d: %ls: (not defined)\n", i + 1, var_name16); continue;&size, NULL, NULL);
@@ -1155,9 +1151,9 @@ static int show_efi_boot_order(void) ret = CMD_RET_FAILURE; goto out; }
ret = EFI_CALL(efi_get_variable(var_name16,
&efi_global_variable_guid, NULL,
&size, data));
ret = efi_get_variable_int(var_name16,
&efi_global_variable_guid, NULL,
if (ret != EFI_SUCCESS) { free(data); ret = CMD_RET_FAILURE;&size, data, NULL);
@@ -1444,10 +1440,9 @@ static int do_efi_query_info(struct cmd_tbl *cmdtp, int flag, EFI_VARIABLE_TIME_BASED_AUTHENTICATED_WRITE_ACCESS; }
- ret = EFI_CALL(efi_query_variable_info(attr,
&max_variable_storage_size,
&remain_variable_storage_size,
&max_variable_size));
- ret = efi_query_variable_info_int(attr, &max_variable_storage_size,
&remain_variable_storage_size,
if (ret != EFI_SUCCESS) { printf("Error: Cannot query UEFI variables, r = %lu\n", ret & ~EFI_ERROR_MASK);&max_variable_size);
-- 2.37.2
Reviewed-by: Ilias Apalodimas ilias.apalodimas@linaro.org