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.schucha...@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.apalodi...@linaro.org>

Reply via email to