twx-linux/include
Kui-Feng Lee b671c2067a bpf: Retire the struct_ops map kvalue->refcnt.
We have replaced kvalue-refcnt with synchronize_rcu() to wait for an
RCU grace period.

Maintenance of kvalue->refcnt was a complicated task, as we had to
simultaneously keep track of two reference counts: one for the
reference count of bpf_map. When the kvalue->refcnt reaches zero, we
also have to reduce the reference count on bpf_map - yet these steps
are not performed in an atomic manner and require us to be vigilant
when managing them. By eliminating kvalue->refcnt, we can make our
maintenance more straightforward as the refcount of bpf_map is now
solely managed!

To prevent the trampoline image of a struct_ops from being released
while it is still in use, we wait for an RCU grace period. The
setsockopt(TCP_CONGESTION, "...") command allows you to change your
socket's congestion control algorithm and can result in releasing the
old struct_ops implementation. It is fine. However, this function is
exposed through bpf_setsockopt(), it may be accessed by BPF programs
as well. To ensure that the trampoline image belonging to struct_op
can be safely called while its method is in use, the trampoline
safeguarde the BPF program with rcu_read_lock(). Doing so prevents any
destruction of the associated images before returning from a
trampoline and requires us to wait for an RCU grace period.

Signed-off-by: Kui-Feng Lee <kuifeng@meta.com>
Link: https://lore.kernel.org/r/20230323032405.3735486-2-kuifeng@meta.com
Signed-off-by: Martin KaFai Lau <martin.lau@kernel.org>
2023-03-22 22:51:47 -07:00
..
acpi pci-v6.3-changes 2023-02-24 16:51:40 -08:00
asm-generic Driver core changes for 6.3-rc1 2023-02-24 12:58:55 -08:00
clocksource
crypto
drm Driver core changes for 6.3-rc1 2023-02-24 12:58:55 -08:00
dt-bindings ARM: SoC drivers for 6.3 2023-02-27 10:04:49 -08:00
keys
kunit
kvm
linux bpf: Retire the struct_ops map kvalue->refcnt. 2023-03-22 22:51:47 -07:00
math-emu
media media updates for v6.3-rc1 2023-02-26 11:47:26 -08:00
memory
misc
net xdp: remove unused {__,}xdp_release_frame() 2023-03-14 15:20:05 -07:00
pcmcia
ras
rdma
rv
scsi SCSI misc on 20230222 2023-02-22 13:41:41 -08:00
soc
sound Driver core changes for 6.3-rc1 2023-02-24 12:58:55 -08:00
target
trace ARM: SoC drivers for 6.3 2023-02-27 10:04:49 -08:00
uapi bpf: use canonical ftrace path 2023-03-13 21:51:30 -07:00
ufs SCSI misc on 20230222 2023-02-22 13:41:41 -08:00
vdso
video
xen Driver core changes for 6.3-rc1 2023-02-24 12:58:55 -08:00