ip help exits with -1 for all commands except for stats, make it match. This removes a goto err, which is redundant since "enabled" gets allocated only if we find a level, but we enter do_help only if we didn't. Fixes: df0b2c6d0098 ("ipstats: Add a shell of "show" command") Signed-off-by: Yedaya Katsman --- ip/ipstats.c | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/ip/ipstats.c b/ip/ipstats.c index f0f8dcdcbd2a9e1c83eed6ca54df28b91c058d9c..812a11dacb2f5851ea5d16644b82e8a7a0428e5a 100644 --- a/ip/ipstats.c +++ b/ip/ipstats.c @@ -1085,7 +1085,9 @@ static int ipstats_enable_check(struct ipstats_sel *sel, return err; } -static int do_help(void) +static void do_help(void) __attribute__((noreturn)); + +static void do_help(void) { const struct ipstats_stat_desc *toplev = &ipstats_stat_desc_toplev_group; int i; @@ -1135,8 +1137,7 @@ static int do_help(void) if (opened) fprintf(stderr, " }\n"); } - - return 0; + exit(-1); } static int ipstats_select(struct ipstats_sel *old_sel, @@ -1190,7 +1191,6 @@ static int ipstats_show(int argc, char **argv) dev = *argv; } else if (strcmp(*argv, "help") == 0) { do_help(); - return 0; } else { bool found_level = false; @@ -1209,8 +1209,6 @@ static int ipstats_show(int argc, char **argv) if (!found_level) { fprintf(stderr, "What is \"%s\"?\n", *argv); do_help(); - err = -EINVAL; - goto err; } } @@ -1286,11 +1284,9 @@ static int ipstats_set(int argc, char **argv) return err; } else if (strcmp(*argv, "help") == 0) { do_help(); - return 0; } else { fprintf(stderr, "What is \"%s\"?\n", *argv); do_help(); - return -EINVAL; } NEXT_ARG_FWD(); @@ -1321,7 +1317,6 @@ int do_ipstats(int argc, char **argv) rc = ipstats_show(0, NULL); } else if (strcmp(*argv, "help") == 0) { do_help(); - rc = 0; } else if (strcmp(*argv, "show") == 0) { /* Invoking "stats show" implies one -s. Passing -d adds one * more -s. --- base-commit: 218757a8b8bb431b382d7a104edb6ed4336d3b43 change-id: 20260301-ip-stats-exit-code-ce417579bcb6 Best regards, -- Yedaya Katsman