[PATCH v4 06/10] cmd: ubi: change all positive error return value to negative

Simon Glass sjg at chromium.org
Fri May 15 14:56:01 CEST 2026


Hi Weijie,

On 2026-05-13T08:02:45, Weijie Gao <weijie.gao at mediatek.com> wrote:
> cmd: ubi: change all positive error return value to negative
>
> Change all return value using errno codes to negative. This makes it
> consistent with the linux ubi layer.
>
> Also, to follow the standard definition of U-Boot command, in the do_ubi()
> command handler, the return value is converted to CMD_RET_FAILURE for error
> returning, and CMD_RET_USAGE for incorrect usage.
>
> Signed-off-by: Weijie Gao <weijie.gao at mediatek.com>
>
> cmd/ubi.c | 106 ++++++++++++++++++++++++++++++++++++--------------------------
>  1 file changed, 62 insertions(+), 44 deletions(-)

Reviewed-by: Simon Glass <sjg at chromium.org>

> diff --git a/cmd/ubi.c b/cmd/ubi.c
> @@ -761,7 +762,7 @@ static int do_ubi(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[])
>                       return ubi_check(argv[2]);
>
>               printf("Error, no volume name passed\n");
> -             return 1;
> +             return CMD_RET_FAILURE;

A missing argument is a usage error, not a runtime failure. Please use
CMD_RET_USAGE here, and likewise for the 'Incorrect type' and 'no
volume name passed' paths in the create handler, so the user sees the
help text.

> diff --git a/cmd/ubi.c b/cmd/ubi.c
> @@ -677,7 +674,7 @@ int ubi_part(const char *part_name, const char *vid_header_offset)
>       mtd = get_mtd_device_nm(part_name);
>       if (IS_ERR(mtd)) {
>               printf("Partition %s not found!\n", part_name);
> -             return 1;
> +             return PTR_ERR(mtd);
>       }

PTR_ERR() returns long but ubi_part() returns int. Please cast, or
just return a specific errno like -ENODEV

> diff --git a/cmd/ubi.c b/cmd/ubi.c
> @@ -806,34 +807,46 @@ static int do_ubi(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[])
>               }
>               /* E.g., create volume */
>               if (argc == 3) {
> -                     return ubi_create_vol(argv[2], size, dynamic, id,
> -                                           skipcheck);
> +                     ret = ubi_create_vol(argv[2], size, dynamic, id,
> +                                          skipcheck);
> +                     if (ret)
> +                             return CMD_RET_FAILURE;
> +                     return 0;
>               }

This three-line conversion is repeated about seven times in do_ubi().
Since the called functions already print their own errors, a helper or
just 'return ret ? CMD_RET_FAILURE : 0;' would cut the duplication.
What do you think?

Regards,
Simon


More information about the U-Boot mailing list