bpf: Consolidate spin_lock, timer management into btf_record
authorKumar Kartikeya Dwivedi <memxor@gmail.com>
Thu, 3 Nov 2022 19:09:56 +0000 (00:39 +0530)
committerAlexei Starovoitov <ast@kernel.org>
Fri, 4 Nov 2022 05:19:40 +0000 (22:19 -0700)
commitdb559117828d2448fe81ada051c60bcf39f822e9
tree87f28016dc9f10ea9ec1e4274e92ea91bc2179c1
parentaf085f55329ca72c8c6f78a11f352ef7a7a4d1d7
bpf: Consolidate spin_lock, timer management into btf_record

Now that kptr_off_tab has been refactored into btf_record, and can hold
more than one specific field type, accomodate bpf_spin_lock and
bpf_timer as well.

While they don't require any more metadata than offset, having all
special fields in one place allows us to share the same code for
allocated user defined types and handle both map values and these
allocated objects in a similar fashion.

As an optimization, we still keep spin_lock_off and timer_off offsets in
the btf_record structure, just to avoid having to find the btf_field
struct each time their offset is needed. This is mostly needed to
manipulate such objects in a map value at runtime. It's ok to hardcode
just one offset as more than one field is disallowed.

Signed-off-by: Kumar Kartikeya Dwivedi <memxor@gmail.com>
Link: https://lore.kernel.org/r/20221103191013.1236066-8-memxor@gmail.com
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
12 files changed:
include/linux/bpf.h
include/linux/btf.h
kernel/bpf/arraymap.c
kernel/bpf/bpf_local_storage.c
kernel/bpf/btf.c
kernel/bpf/hashtab.c
kernel/bpf/helpers.c
kernel/bpf/local_storage.c
kernel/bpf/map_in_map.c
kernel/bpf/syscall.c
kernel/bpf/verifier.c
net/core/bpf_sk_storage.c