bpf: replace register_is_const() with is_reg_const()
The addition of is_reg_const() in commit 171de12646d2 ("bpf: generalize is_branch_taken to handle all conditional jumps in one place") has made the register_is_const() redundant. Give the former has more feature, plus the fact the latter is only used in one place, replace register_is_const() with is_reg_const(), and remove the definition of register_is_const. This requires moving the definition of is_reg_const() further up. And since the comment of reg_const_value() reference is_reg_const(), move it up as well. Signed-off-by: Shung-Hsi Yu <shung-hsi.yu@suse.com> Acked-by: Andrii Nakryiko <andrii@kernel.org> Link: https://lore.kernel.org/r/20231108140043.12282-1-shung-hsi.yu@suse.com Signed-off-by: Alexei Starovoitov <ast@kernel.org>
This commit is contained in:
parent
27007fae70
commit
82ce364c60
@ -4690,9 +4690,17 @@ static bool register_is_null(struct bpf_reg_state *reg)
|
||||
return reg->type == SCALAR_VALUE && tnum_equals_const(reg->var_off, 0);
|
||||
}
|
||||
|
||||
static bool register_is_const(struct bpf_reg_state *reg)
|
||||
/* check if register is a constant scalar value */
|
||||
static bool is_reg_const(struct bpf_reg_state *reg, bool subreg32)
|
||||
{
|
||||
return reg->type == SCALAR_VALUE && tnum_is_const(reg->var_off);
|
||||
return reg->type == SCALAR_VALUE &&
|
||||
tnum_is_const(subreg32 ? tnum_subreg(reg->var_off) : reg->var_off);
|
||||
}
|
||||
|
||||
/* assuming is_reg_const() is true, return constant value of a register */
|
||||
static u64 reg_const_value(struct bpf_reg_state *reg, bool subreg32)
|
||||
{
|
||||
return subreg32 ? tnum_subreg(reg->var_off).value : reg->var_off.value;
|
||||
}
|
||||
|
||||
static bool __is_scalar_unbounded(struct bpf_reg_state *reg)
|
||||
@ -10050,7 +10058,7 @@ record_func_key(struct bpf_verifier_env *env, struct bpf_call_arg_meta *meta,
|
||||
val = reg->var_off.value;
|
||||
max = map->max_entries;
|
||||
|
||||
if (!(register_is_const(reg) && val < max)) {
|
||||
if (!(is_reg_const(reg, false) && val < max)) {
|
||||
bpf_map_key_store(aux, BPF_MAP_KEY_POISON);
|
||||
return 0;
|
||||
}
|
||||
@ -14220,19 +14228,6 @@ static void find_good_pkt_pointers(struct bpf_verifier_state *vstate,
|
||||
}));
|
||||
}
|
||||
|
||||
/* check if register is a constant scalar value */
|
||||
static bool is_reg_const(struct bpf_reg_state *reg, bool subreg32)
|
||||
{
|
||||
return reg->type == SCALAR_VALUE &&
|
||||
tnum_is_const(subreg32 ? tnum_subreg(reg->var_off) : reg->var_off);
|
||||
}
|
||||
|
||||
/* assuming is_reg_const() is true, return constant value of a register */
|
||||
static u64 reg_const_value(struct bpf_reg_state *reg, bool subreg32)
|
||||
{
|
||||
return subreg32 ? tnum_subreg(reg->var_off).value : reg->var_off.value;
|
||||
}
|
||||
|
||||
/*
|
||||
* <reg1> <op> <reg2>, currently assuming reg2 is a constant
|
||||
*/
|
||||
|
Loading…
x
Reference in New Issue
Block a user