bpf: Initialize used but uninit variable in propagate_liveness()

With input changed == NULL, a local variable is used for "changed".
Initialize tmp properly, so that it can be used in the following:
   *changed |= err > 0;

Otherwise, UBSAN will complain:

UBSAN: invalid-load in kernel/bpf/verifier.c:18924:4
load of value <some random value> is not a valid value for type '_Bool'

Fixes: dfb2d4c64b ("bpf: set 'changed' status if propagate_liveness() did any updates")
Signed-off-by: Song Liu <song@kernel.org>
Acked-by: Eduard Zingerman <eddyz87@gmail.com>
Link: https://lore.kernel.org/r/20250612221100.2153401-1-song@kernel.org
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
This commit is contained in:
Song Liu 2025-06-12 15:11:00 -07:00 committed by Alexei Starovoitov
parent 50034d9362
commit fa6932577c

View File

@ -18900,7 +18900,7 @@ static int propagate_liveness(struct bpf_verifier_env *env,
struct bpf_reg_state *state_reg, *parent_reg;
struct bpf_func_state *state, *parent;
int i, frame, err = 0;
bool tmp;
bool tmp = false;
changed = changed ?: &tmp;
if (vparent->curframe != vstate->curframe) {