OSDN Git Service

selftests/bpf: avoid mark_all_scalars_precise() trigger in one of iter tests
authorAndrii Nakryiko <andrii@kernel.org>
Mon, 24 Apr 2023 23:51:28 +0000 (16:51 -0700)
committerAlexei Starovoitov <ast@kernel.org>
Tue, 25 Apr 2023 00:46:44 +0000 (17:46 -0700)
commitbe7dbd275dc6b911a5b9a22c4f9cb71b2c7fd847
treef94cefcf2ec6dc724862ba152c236f1ada2cafec
parenta0c109dcafb15b8bee187c49fb746779374f60f0
selftests/bpf: avoid mark_all_scalars_precise() trigger in one of iter tests

iter_pass_iter_ptr_to_subprog subtest is relying on actual array size
being passed as subprog parameter. This combined with recent fixes to
precision tracking in conditional jumps ([0]) is now causing verifier to
backtrack all the way to the point where sum() and fill() subprogs are
called, at which point precision backtrack bails out and forces all the
states to have precise SCALAR registers. This in turn causes each
possible value of i within fill() and sum() subprogs to cause
a different non-equivalent state, preventing iterator code to converge.

For now, change the test to assume fixed size of passed in array. Once
BPF verifier supports precision tracking across subprogram calls, these
changes will be reverted as unnecessary.

  [0] 71b547f56124 ("bpf: Fix incorrect verifier pruning due to missing register precision taints")

Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
Link: https://lore.kernel.org/r/20230424235128.1941726-1-andrii@kernel.org
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
tools/testing/selftests/bpf/progs/iters.c