Re: [PATCH v1 2/4] perf parse-events: Avoid use uninitialized warning

From: Nick Desaulniers
Date: Mon Jul 24 2023 - 17:02:04 EST


On Mon, Jul 24, 2023 at 1:13 PM Ian Rogers <irogers@xxxxxxxxxx> wrote:
>
> With GCC LTO a potential use uninitialized is spotted:
> ```
> In function ‘parse_events_config_bpf’,
> inlined from ‘parse_events_load_bpf’ at util/parse-events.c:874:8:
> util/parse-events.c:792:37: error: ‘error_pos’ may be used uninitialized [-Werror=maybe-uninitialized]
> 792 | idx = term->err_term + error_pos;
> | ^
> util/parse-events.c: In function ‘parse_events_load_bpf’:
> util/parse-events.c:765:13: note: ‘error_pos’ was declared here
> 765 | int error_pos;
> | ^
> ```
> So initialize at declaration.

This common pattern in C is error prone (conditional assignment in the
callee; callers maybe forget to initialize, then unconditionally use
the value). Clang's static analyzer can spot these, but isn't run for
tools/ AFAIK.

Reviewed-by: Nick Desaulniers <ndesaulniers@xxxxxxxxxx>

>
> Signed-off-by: Ian Rogers <irogers@xxxxxxxxxx>
> ---
> tools/perf/util/parse-events.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/tools/perf/util/parse-events.c b/tools/perf/util/parse-events.c
> index acde097e327c..da29061ecf49 100644
> --- a/tools/perf/util/parse-events.c
> +++ b/tools/perf/util/parse-events.c
> @@ -762,7 +762,7 @@ parse_events_config_bpf(struct parse_events_state *parse_state,
> struct list_head *head_config)
> {
> struct parse_events_term *term;
> - int error_pos;
> + int error_pos = 0;
>
> if (!head_config || list_empty(head_config))
> return 0;
> --
> 2.41.0.487.g6d72f3e995-goog
>


--
Thanks,
~Nick Desaulniers