mirror of
https://github.com/torvalds/linux.git
synced 2026-03-13 23:46:14 +01:00
bpf: Add missing checks to avoid verbose verifier log
There are a few places where log level is not checked before calling "verbose()". This forces programs working only at BPF_LOG_LEVEL_STATS (e.g. veristat) to allocate unnecessarily large log buffers. Add missing checks. Reported-by: Emil Tsalapatis <emil@etsalapatis.com> Signed-off-by: Eduard Zingerman <eddyz87@gmail.com> Link: https://lore.kernel.org/r/20251114200542.912386-1-eddyz87@gmail.com Signed-off-by: Alexei Starovoitov <ast@kernel.org>
This commit is contained in:
parent
c1da3df719
commit
e5d2e34e72
1 changed files with 6 additions and 4 deletions
|
|
@ -10720,8 +10720,9 @@ static int check_func_call(struct bpf_verifier_env *env, struct bpf_insn *insn,
|
|||
return err;
|
||||
}
|
||||
|
||||
verbose(env, "Func#%d ('%s') is global and assumed valid.\n",
|
||||
subprog, sub_name);
|
||||
if (env->log.level & BPF_LOG_LEVEL)
|
||||
verbose(env, "Func#%d ('%s') is global and assumed valid.\n",
|
||||
subprog, sub_name);
|
||||
if (env->subprog_info[subprog].changes_pkt_data)
|
||||
clear_all_pkt_pointers(env);
|
||||
/* mark global subprog for verifying after main prog */
|
||||
|
|
@ -19470,7 +19471,7 @@ static int propagate_precision(struct bpf_verifier_env *env,
|
|||
bt_set_frame_slot(&env->bt, fr, i);
|
||||
first = false;
|
||||
}
|
||||
if (!first)
|
||||
if (!first && (env->log.level & BPF_LOG_LEVEL2))
|
||||
verbose(env, "\n");
|
||||
}
|
||||
|
||||
|
|
@ -23698,7 +23699,8 @@ static int do_check_common(struct bpf_verifier_env *env, int subprog)
|
|||
struct bpf_subprog_arg_info *arg;
|
||||
struct bpf_reg_state *reg;
|
||||
|
||||
verbose(env, "Validating %s() func#%d...\n", sub_name, subprog);
|
||||
if (env->log.level & BPF_LOG_LEVEL)
|
||||
verbose(env, "Validating %s() func#%d...\n", sub_name, subprog);
|
||||
ret = btf_prepare_func_args(env, subprog);
|
||||
if (ret)
|
||||
goto out;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue