mirror of
https://github.com/torvalds/linux.git
synced 2024-12-21 10:31:54 +00:00
selftests/bpf: add iter test requiring range x range logic
Add a simple verifier test that requires deriving reg bounds for one register from another register that's not a constant. This is a realistic example of iterating elements of an array with fixed maximum number of elements, but smaller actual number of elements. This small example was an original motivation for doing this whole patch set in the first place, yes. Signed-off-by: Andrii Nakryiko <andrii@kernel.org> Link: https://lore.kernel.org/r/20231112010609.848406-14-andrii@kernel.org Signed-off-by: Alexei Starovoitov <ast@kernel.org>
This commit is contained in:
parent
a5c57f81eb
commit
882e3d873c
@ -1411,4 +1411,26 @@ __naked int checkpoint_states_deletion(void)
|
||||
);
|
||||
}
|
||||
|
||||
struct {
|
||||
int data[32];
|
||||
int n;
|
||||
} loop_data;
|
||||
|
||||
SEC("raw_tp")
|
||||
__success
|
||||
int iter_arr_with_actual_elem_count(const void *ctx)
|
||||
{
|
||||
int i, n = loop_data.n, sum = 0;
|
||||
|
||||
if (n > ARRAY_SIZE(loop_data.data))
|
||||
return 0;
|
||||
|
||||
bpf_for(i, 0, n) {
|
||||
/* no rechecking of i against ARRAY_SIZE(loop_data.n) */
|
||||
sum += loop_data.data[i];
|
||||
}
|
||||
|
||||
return sum;
|
||||
}
|
||||
|
||||
char _license[] SEC("license") = "GPL";
|
||||
|
Loading…
Reference in New Issue
Block a user