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