[PATCH] cmd: simplify efidebug
Ilias Apalodimas
ilias.apalodimas at linaro.org
Sat Oct 15 21:14:31 CEST 2022
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 at 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,
> + NULL, &size, NULL, NULL);
> if (ret == EFI_BUFFER_TOO_SMALL) {
> data = malloc(size);
> if (!data) {
> printf("ERROR: Out of memory\n");
> return;
> }
> - ret = EFI_CALL(efi_get_variable(varname16,
> - &efi_global_variable_guid,
> - NULL, &size, data));
> + ret = efi_get_variable_int(varname16, &efi_global_variable_guid,
> + NULL, &size, data, NULL);
> if (ret == EFI_SUCCESS)
> show_efi_boot_opt_data(varname16, data, &size);
> free(data);
> @@ -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));
> + ret = efi_get_next_variable_name_int(&size, var_name16, &guid);
> if (ret == EFI_NOT_FOUND)
> break;
> if (ret == EFI_BUFFER_TOO_SMALL) {
> @@ -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,
> + &guid);
> }
> if (ret != EFI_SUCCESS) {
> free(var_name16);
> @@ -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,
> + NULL, &size, NULL, NULL);
> if (ret != EFI_BUFFER_TOO_SMALL) {
> if (ret == EFI_NOT_FOUND) {
> printf("BootOrder not defined\n");
> @@ -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,
> + NULL, &size, bootorder, NULL);
> if (ret != EFI_SUCCESS) {
> ret = CMD_RET_FAILURE;
> goto out;
> @@ -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,
> + &size, NULL, NULL);
> if (ret != EFI_BUFFER_TOO_SMALL) {
> printf("%2d: %ls: (not defined)\n", i + 1, var_name16);
> continue;
> @@ -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,
> + &size, data, NULL);
> if (ret != EFI_SUCCESS) {
> free(data);
> ret = CMD_RET_FAILURE;
> @@ -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,
> + &max_variable_size);
> if (ret != EFI_SUCCESS) {
> printf("Error: Cannot query UEFI variables, r = %lu\n",
> ret & ~EFI_ERROR_MASK);
> --
> 2.37.2
>
Reviewed-by: Ilias Apalodimas <ilias.apalodimas at linaro.org>
More information about the U-Boot
mailing list