linux/tools/testing/selftests/bpf/verifier
Eduard Zingerman 904e6ddf41 bpf: Use scalar ids in mark_chain_precision()
Change mark_chain_precision() to track precision in situations
like below:

    r2 = unknown value
    ...
  --- state #0 ---
    ...
    r1 = r2                 // r1 and r2 now share the same ID
    ...
  --- state #1 {r1.id = A, r2.id = A} ---
    ...
    if (r2 > 10) goto exit; // find_equal_scalars() assigns range to r1
    ...
  --- state #2 {r1.id = A, r2.id = A} ---
    r3 = r10
    r3 += r1                // need to mark both r1 and r2

At the beginning of the processing of each state, ensure that if a
register with a scalar ID is marked as precise, all registers sharing
this ID are also marked as precise.

This property would be used by a follow-up change in regsafe().

Signed-off-by: Eduard Zingerman <eddyz87@gmail.com>
Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
Acked-by: Andrii Nakryiko <andrii@kernel.org>
Link: https://lore.kernel.org/bpf/20230613153824.3324830-2-eddyz87@gmail.com
2023-06-13 15:14:27 -07:00
..
.gitignore
atomic_and.c
atomic_bounds.c
atomic_cmpxchg.c
atomic_fetch.c
atomic_fetch_add.c
atomic_invalid.c bpf: Small BPF verifier log improvements 2022-03-03 16:54:10 +01:00
atomic_or.c
atomic_xchg.c
atomic_xor.c
basic.c
basic_call.c
basic_instr.c
basic_stx_ldx.c
bpf_loop_inline.c selftests/bpf: Fix test_verifier failed test in unprivileged mode 2022-07-21 21:03:25 -07:00
bpf_st_mem.c selftests/bpf: check if BPF_ST with variable offset preserves STACK_ZERO 2023-02-15 11:48:48 -08:00
calls.c bpf: Treat KF_RELEASE kfuncs as KF_TRUSTED_ARGS 2023-03-25 16:56:22 -07:00
ctx_sk_lookup.c
ctx_skb.c
dead_code.c
direct_value_access.c
event_output.c
jit.c bpf: add selftests for lsh, rsh, arsh with reg operand 2022-10-19 16:53:51 -07:00
jmp32.c bpf, selftests: Add verifier test case for jmp32's jeq/jne 2022-07-01 12:56:27 -07:00
jset.c
jump.c bpf, selftests: Add verifier test case for imm=0,umin=0,umax=1 scalar 2022-07-01 12:56:27 -07:00
junk_insn.c
ld_abs.c
ld_dw.c
ld_imm64.c
map_kptr.c bpf: Remove bpf_kfunc_call_test_kptr_get() test kfunc 2023-04-16 08:51:24 -07:00
perf_event_sample_period.c
precise.c bpf: Use scalar ids in mark_chain_precision() 2023-06-13 15:14:27 -07:00
scale.c
sleepable.c bpf: Allow BPF_PROG_TYPE_STRUCT_OPS programs to be sleepable 2023-01-25 10:25:57 -08:00
wide_access.c