[U-Boot] [PATCH 0/2] efi_loader: consistent error handling in efidebug.c

If a variable cannot be set, always show an information message.
Do not reuse a variable for a value of a different type.
Heinrich Schuchardt (2): efi_loader: consistent types in efidebug.c efi_loader: consistent error handling in efidebug.c
cmd/efidebug.c | 36 ++++++++++++++++++++++++------------ 1 file changed, 24 insertions(+), 12 deletions(-)
-- 2.20.1

efi_status_t and int are of different size. Use separate variables for return codes of different type.
Signed-off-by: Heinrich Schuchardt xypron.glpk@gmx.de --- cmd/efidebug.c | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-)
diff --git a/cmd/efidebug.c b/cmd/efidebug.c index e657226254..479e37714c 100644 --- a/cmd/efidebug.c +++ b/cmd/efidebug.c @@ -505,7 +505,8 @@ static int do_efi_boot_add(cmd_tbl_t *cmdtp, int flag, struct efi_load_option lo; void *data = NULL; efi_uintn_t size; - int ret; + efi_status_t ret; + int r;
if (argc < 6 || argc > 7) return CMD_RET_USAGE; @@ -538,7 +539,7 @@ static int do_efi_boot_add(cmd_tbl_t *cmdtp, int flag, if (ret != EFI_SUCCESS) { printf("Cannot create device path for "%s %s"\n", argv[3], argv[4]); - ret = CMD_RET_FAILURE; + r = CMD_RET_FAILURE; goto out; } lo.file_path = file_path; @@ -553,7 +554,7 @@ static int do_efi_boot_add(cmd_tbl_t *cmdtp, int flag,
size = efi_serialize_load_option(&lo, (u8 **)&data); if (!size) { - ret = CMD_RET_FAILURE; + r = CMD_RET_FAILURE; goto out; }
@@ -562,14 +563,14 @@ static int do_efi_boot_add(cmd_tbl_t *cmdtp, int flag, EFI_VARIABLE_BOOTSERVICE_ACCESS | EFI_VARIABLE_RUNTIME_ACCESS, size, data)); - ret = (ret == EFI_SUCCESS ? CMD_RET_SUCCESS : CMD_RET_FAILURE); + r = (ret == EFI_SUCCESS ? CMD_RET_SUCCESS : CMD_RET_FAILURE); out: free(data); efi_free_pool(device_path); efi_free_pool(file_path); free(lo.label);
- return ret; + return r; }
/** @@ -896,6 +897,7 @@ static int do_efi_boot_next(cmd_tbl_t *cmdtp, int flag, char *endp; efi_guid_t guid; efi_status_t ret; + int r;
if (argc != 2) return CMD_RET_USAGE; @@ -903,7 +905,7 @@ static int do_efi_boot_next(cmd_tbl_t *cmdtp, int flag, bootnext = (u16)simple_strtoul(argv[1], &endp, 16); if (*endp != '\0' || bootnext > 0xffff) { printf("invalid value: %s\n", argv[1]); - ret = CMD_RET_FAILURE; + r = CMD_RET_FAILURE; goto out; }
@@ -914,9 +916,9 @@ static int do_efi_boot_next(cmd_tbl_t *cmdtp, int flag, EFI_VARIABLE_BOOTSERVICE_ACCESS | EFI_VARIABLE_RUNTIME_ACCESS, size, &bootnext)); - ret = (ret == EFI_SUCCESS ? CMD_RET_SUCCESS : CMD_RET_FAILURE); + r = (ret == EFI_SUCCESS ? CMD_RET_SUCCESS : CMD_RET_FAILURE); out: - return ret; + return r; }
/** @@ -941,6 +943,7 @@ static int do_efi_boot_order(cmd_tbl_t *cmdtp, int flag, char *endp; efi_guid_t guid; efi_status_t ret; + int r;
if (argc == 1) return show_efi_boot_order(); @@ -957,7 +960,7 @@ static int do_efi_boot_order(cmd_tbl_t *cmdtp, int flag, id = (int)simple_strtoul(argv[i], &endp, 16); if (*endp != '\0' || id > 0xffff) { printf("invalid value: %s\n", argv[i]); - ret = CMD_RET_FAILURE; + r = CMD_RET_FAILURE; goto out; }
@@ -970,11 +973,11 @@ static int do_efi_boot_order(cmd_tbl_t *cmdtp, int flag, EFI_VARIABLE_BOOTSERVICE_ACCESS | EFI_VARIABLE_RUNTIME_ACCESS, size, bootorder)); - ret = (ret == EFI_SUCCESS ? CMD_RET_SUCCESS : CMD_RET_FAILURE); + r = (ret == EFI_SUCCESS ? CMD_RET_SUCCESS : CMD_RET_FAILURE); out: free(bootorder);
- return ret; + return r; }
static cmd_tbl_t cmd_efidebug_boot_sub[] = { -- 2.20.1

If a variable cannot be set, always show an information message.
Signed-off-by: Heinrich Schuchardt xypron.glpk@gmx.de --- cmd/efidebug.c | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-)
diff --git a/cmd/efidebug.c b/cmd/efidebug.c index 479e37714c..cb152b3339 100644 --- a/cmd/efidebug.c +++ b/cmd/efidebug.c @@ -506,7 +506,7 @@ static int do_efi_boot_add(cmd_tbl_t *cmdtp, int flag, void *data = NULL; efi_uintn_t size; efi_status_t ret; - int r; + int r = CMD_RET_SUCCESS;
if (argc < 6 || argc > 7) return CMD_RET_USAGE; @@ -563,7 +563,10 @@ static int do_efi_boot_add(cmd_tbl_t *cmdtp, int flag, EFI_VARIABLE_BOOTSERVICE_ACCESS | EFI_VARIABLE_RUNTIME_ACCESS, size, data)); - r = (ret == EFI_SUCCESS ? CMD_RET_SUCCESS : CMD_RET_FAILURE); + if (ret != EFI_SUCCESS) { + printf("Cannot set %ls\n", var_name16); + r = CMD_RET_FAILURE; + } out: free(data); efi_free_pool(device_path); @@ -610,7 +613,7 @@ static int do_efi_boot_rm(cmd_tbl_t *cmdtp, int flag,
ret = EFI_CALL(RT->set_variable(var_name16, &guid, 0, 0, NULL)); if (ret) { - printf("cannot remove Boot%04X", id); + printf("Cannot remove Boot%04X", id); return CMD_RET_FAILURE; } } @@ -897,7 +900,7 @@ static int do_efi_boot_next(cmd_tbl_t *cmdtp, int flag, char *endp; efi_guid_t guid; efi_status_t ret; - int r; + int r = CMD_RET_SUCCESS;
if (argc != 2) return CMD_RET_USAGE; @@ -916,7 +919,10 @@ static int do_efi_boot_next(cmd_tbl_t *cmdtp, int flag, EFI_VARIABLE_BOOTSERVICE_ACCESS | EFI_VARIABLE_RUNTIME_ACCESS, size, &bootnext)); - r = (ret == EFI_SUCCESS ? CMD_RET_SUCCESS : CMD_RET_FAILURE); + if (ret != EFI_SUCCESS) { + printf("Cannot set BootNext\n"); + r = CMD_RET_FAILURE; + } out: return r; } @@ -943,7 +949,7 @@ static int do_efi_boot_order(cmd_tbl_t *cmdtp, int flag, char *endp; efi_guid_t guid; efi_status_t ret; - int r; + int r = CMD_RET_SUCCESS;
if (argc == 1) return show_efi_boot_order(); @@ -973,7 +979,10 @@ static int do_efi_boot_order(cmd_tbl_t *cmdtp, int flag, EFI_VARIABLE_BOOTSERVICE_ACCESS | EFI_VARIABLE_RUNTIME_ACCESS, size, bootorder)); - r = (ret == EFI_SUCCESS ? CMD_RET_SUCCESS : CMD_RET_FAILURE); + if (ret != EFI_SUCCESS) { + printf("Cannot set BootOrder\n"); + r = CMD_RET_FAILURE; + } out: free(bootorder);
-- 2.20.1
participants (1)
-
Heinrich Schuchardt