bpf: Fix usage of trace RCU in local storage.
authorKP Singh <kpsingh@kernel.org>
Mon, 18 Apr 2022 15:51:58 +0000 (15:51 +0000)
committerAlexei Starovoitov <ast@kernel.org>
Wed, 20 Apr 2022 00:55:45 +0000 (17:55 -0700)
commitdcf456c9a095a6e71f53d6f6f004133ee851ee70
tree9050bc91c5fb6751e8ab4a6076837645ef34dd19
parent0e5aefa334dba7fc07ee4ef52ae622f957fc865b
bpf: Fix usage of trace RCU in local storage.

bpf_{sk,task,inode}_storage_free() do not need to use
call_rcu_tasks_trace as no BPF program should be accessing the owner
as it's being destroyed. The only other reader at this point is
bpf_local_storage_map_free() which uses normal RCU.

The only path that needs trace RCU are:

* bpf_local_storage_{delete,update} helpers
* map_{delete,update}_elem() syscalls

Fixes: 0fe4b381a59e ("bpf: Allow bpf_local_storage to be used by sleepable programs")
Signed-off-by: KP Singh <kpsingh@kernel.org>
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Acked-by: Martin KaFai Lau <kafai@fb.com>
Link: https://lore.kernel.org/bpf/20220418155158.2865678-1-kpsingh@kernel.org
include/linux/bpf_local_storage.h
kernel/bpf/bpf_inode_storage.c
kernel/bpf/bpf_local_storage.c
kernel/bpf/bpf_task_storage.c
net/core/bpf_sk_storage.c