diff options
| author | Eduard Zingerman <eddyz87@gmail.com> | 2026-10-09 03:47:43 -0700 |
|---|---|---|
| committer | Alexei Starovoitov <ast@kernel.org> | 2026-10-09 20:29:13 +0000 |
| commit | f849c3a145eb243ef1c4b08ec320a2538c9e722b (patch) | |
| tree | a808d23b4198cad6b75def6b51a724ddb4f7b826 /kernel | |
| parent | 9ae7f5e8bf1d8be74797f937cdbeb730178a8c3d (diff) | |
bpf: Add bpf_set_reg_range()
A utility function for setting a register's range and step information.
Used by SCEV widening and clamping logic further in the series.
Signed-off-by: Eduard Zingerman <eddyz87@gmail.com>
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Link: https://patch.msgid.link/20261009-scev-minimal-rebase-v3-25-bcba9bc53ac9@gmail.com
Diffstat (limited to 'kernel')
| -rw-r--r-- | kernel/bpf/verifier.c | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/kernel/bpf/verifier.c b/kernel/bpf/verifier.c index 16b7758221b0..585303d28690 100644 --- a/kernel/bpf/verifier.c +++ b/kernel/bpf/verifier.c @@ -17273,6 +17273,18 @@ clear_id: return 0; } +int bpf_set_reg_range(struct bpf_verifier_env *env, struct bpf_reg_state *reg, + struct cnum64 range, u16 base, u16 step) +{ + reg->r64 = range; + reg->r32 = CNUM32_UNBOUNDED; + reg->step = step; + reg->base = base; + reg->var_off = tnum_unknown; + reg_bounds_sync(reg); /* this should infer the tnum alignment */ + return reg_bounds_sanity_check(env, reg, "bpf_set_reg_range"); +} + /* check validity of 32-bit and 64-bit arithmetic operations */ static int check_alu_op(struct bpf_verifier_env *env, struct bpf_insn *insn) { |
