Disallow combining BPF_F_LOCK with map values that mix bpf_spin_lock and
other special BTF fields, which may lead to undefined behavior. Such cases
are now rejected with -EOPNOTSUPP.
Map update flag validation is centralized in
bpf_map_check_op_flags() and reused across array, hash, local-storage,
and task-storage update paths, with selftests added to verify the new
behavior.
Leon Hwang (2):
bpf: Disallow BPF_F_LOCK with mixed special fields and centralize flag
checks
selftests/bpf: Add tests to verify BPF_F_LOCK restrictions
include/linux/bpf.h | 7 ++
kernel/bpf/arraymap.c | 11 ++-
kernel/bpf/bpf_local_storage.c | 7 --
kernel/bpf/bpf_task_storage.c | 3 -
kernel/bpf/hashtab.c | 8 +--
.../selftests/bpf/prog_tests/map_lock.c | 70 +++++++++++++++++++
.../selftests/bpf/progs/test_map_lock.c | 31 +++++++-
7 files changed, 114 insertions(+), 23 deletions(-)
--
2.52.0