bpf, sockmap: fix deadlocks in the sockhash and sockmap
authorXin Liu <liuxin350@huawei.com>
Thu, 6 Apr 2023 12:26:22 +0000 (20:26 +0800)
committerAlexei Starovoitov <ast@kernel.org>
Wed, 12 Apr 2023 23:38:54 +0000 (16:38 -0700)
commited17aa92dc56b6d8883e4b7a8f1c6fbf5ed6cd29
tree25dd96eee7b1b34855f30878a20a3f94a86bf3ed
parentec48599abee3a16fdc93c1c3c3e153a4f4d29420
bpf, sockmap: fix deadlocks in the sockhash and sockmap

When huang uses sched_switch tracepoint, the tracepoint
does only one thing in the mounted ebpf program, which
deletes the fixed elements in sockhash ([0])

It seems that elements in sockhash are rarely actively
deleted by users or ebpf program. Therefore, we do not
pay much attention to their deletion. Compared with hash
maps, sockhash only provides spin_lock_bh protection.
This causes it to appear to have self-locking behavior
in the interrupt context.

  [0]:https://lore.kernel.org/all/CABcoxUayum5oOqFMMqAeWuS8+EzojquSOSyDA3J_2omY=2EeAg@mail.gmail.com/

Reported-by: Hsin-Wei Hung <hsinweih@uci.edu>
Fixes: 604326b41a6f ("bpf, sockmap: convert to generic sk_msg interface")
Signed-off-by: Xin Liu <liuxin350@huawei.com>
Acked-by: John Fastabend <john.fastabend@gmail.com>
Link: https://lore.kernel.org/r/20230406122622.109978-1-liuxin350@huawei.com
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
net/core/sock_map.c