diff options
author | Eduard Zingerman <eddyz87@gmail.com> | 2023-11-21 04:06:56 +0200 |
---|---|---|
committer | Alexei Starovoitov <ast@kernel.org> | 2023-11-20 18:35:44 -0800 |
commit | ab5cfac139ab8576fb54630d4cca23c3e690ee90 (patch) | |
tree | 897259c37acdd692a381d54633514ca83e3aa6d3 /include/scsi/fc | |
parent | 58124a98cb8eda69d248d7f1de954c8b2767c945 (diff) | |
download | linux-stable-ab5cfac139ab8576fb54630d4cca23c3e690ee90.tar.gz linux-stable-ab5cfac139ab8576fb54630d4cca23c3e690ee90.tar.bz2 linux-stable-ab5cfac139ab8576fb54630d4cca23c3e690ee90.zip |
bpf: verify callbacks as if they are called unknown number of times
Prior to this patch callbacks were handled as regular function calls,
execution of callback body was modeled exactly once.
This patch updates callbacks handling logic as follows:
- introduces a function push_callback_call() that schedules callback
body verification in env->head stack;
- updates prepare_func_exit() to reschedule callback body verification
upon BPF_EXIT;
- as calls to bpf_*_iter_next(), calls to callback invoking functions
are marked as checkpoints;
- is_state_visited() is updated to stop callback based iteration when
some identical parent state is found.
Paths with callback function invoked zero times are now verified first,
which leads to necessity to modify some selftests:
- the following negative tests required adding release/unlock/drop
calls to avoid previously masked unrelated error reports:
- cb_refs.c:underflow_prog
- exceptions_fail.c:reject_rbtree_add_throw
- exceptions_fail.c:reject_with_cp_reference
- the following precision tracking selftests needed change in expected
log trace:
- verifier_subprog_precision.c:callback_result_precise
(note: r0 precision is no longer propagated inside callback and
I think this is a correct behavior)
- verifier_subprog_precision.c:parent_callee_saved_reg_precise_with_callback
- verifier_subprog_precision.c:parent_stack_slot_precise_with_callback
Reported-by: Andrew Werner <awerner32@gmail.com>
Closes: https://lore.kernel.org/bpf/CA+vRuzPChFNXmouzGG+wsy=6eMcfr1mFG0F3g7rbg-sedGKW3w@mail.gmail.com/
Acked-by: Andrii Nakryiko <andrii@kernel.org>
Signed-off-by: Eduard Zingerman <eddyz87@gmail.com>
Link: https://lore.kernel.org/r/20231121020701.26440-7-eddyz87@gmail.com
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Diffstat (limited to 'include/scsi/fc')
0 files changed, 0 insertions, 0 deletions