This set refactors lock management in the verifier in preparation for spin locks that can be acquired multiple times. In addition to this, unnecessary code special case reference leak logic for callbacks is also dropped, that is no longer necessary. See patches for details. Changelog: ---------- v4 -> v5 v4: https://lore.kernel.org/bpf/20241109074347.1434011-1-memxor@xxxxxxxxx * Make active_locks part of bpf_func_state (Alexei) * Remove unneeded in_callback_fn logic for references v3 -> v4 v3: https://lore.kernel.org/bpf/20241104151716.2079893-1-memxor@xxxxxxxxx * Address comments from Alexei * Drop struct bpf_active_lock definition * Name enum type, expand definition to multiple lines * s/REF_TYPE_BPF_LOCK/REF_TYPE_LOCK/g * Change active_lock type to int * Fix type of 'type' in acquire_lock_state * Filter by taking type explicitly in find_lock_state * WARN for default case in refsafe switch statement v2 -> v3 v2: https://lore.kernel.org/bpf/20241103212252.547071-1-memxor@xxxxxxxxx * Rebase on bpf-next to resolve merge conflict v1 -> v2 v1: https://lore.kernel.org/bpf/20241103205856.345580-1-memxor@xxxxxxxxx * Fix refsafe state comparison to check callback_ref and ptr separately. Kumar Kartikeya Dwivedi (2): bpf: Refactor active lock management bpf: Drop special callback reference handling include/linux/bpf_verifier.h | 40 ++--- kernel/bpf/verifier.c | 168 ++++++++++++------ .../selftests/bpf/prog_tests/cb_refs.c | 4 +- 3 files changed, 126 insertions(+), 86 deletions(-) base-commit: 163ea3dec3c8048618f561a2c3b30f4c5795e991 -- 2.43.5