diff options
author | Alexei Starovoitov <ast@kernel.org> | 2023-03-15 01:28:11 +0300 |
---|---|---|
committer | Alexei Starovoitov <ast@kernel.org> | 2023-03-15 01:28:11 +0300 |
commit | 3c2611bac08a834697be918ac357eaff2e47d5b3 (patch) | |
tree | c2664c03c90c3fcde68eafd78437d29cae82369e /rust | |
parent | 5584d9e63eee25c6ccf36aa5d09efc113d762a05 (diff) | |
download | linux-3c2611bac08a834697be918ac357eaff2e47d5b3.tar.xz |
selftests/bpf: Fix trace_virtqueue_add_sgs test issue with LLVM 17.
LLVM commit https://reviews.llvm.org/D143726 introduced hoistMinMax optimization
that transformed
(i < VIRTIO_MAX_SGS) && (i < out_sgs)
into
i < MIN(VIRTIO_MAX_SGS, out_sgs)
and caused the verifier to stop recognizing such loop as bounded.
Which resulted in the following test failure:
libbpf: prog 'trace_virtqueue_add_sgs': BPF program load failed: Bad address
libbpf: prog 'trace_virtqueue_add_sgs': -- BEGIN PROG LOAD LOG --
The sequence of 8193 jumps is too complex.
verification time 789206 usec
stack depth 56
processed 156446 insns (limit 1000000) max_states_per_insn 7 total_states 1746 peak_states 1701 mark_read 12
-- END PROG LOAD LOG --
libbpf: prog 'trace_virtqueue_add_sgs': failed to load: -14
libbpf: failed to load object 'loop6.bpf.o'
Workaround the verifier limitation for now with inline asm that
prevents this particular optimization.
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Diffstat (limited to 'rust')
0 files changed, 0 insertions, 0 deletions