aboutsummaryrefslogtreecommitdiffstats
path: root/tools/testing/selftests/bpf/prog_tests/sockmap_basic.c
diff options
context:
space:
mode:
authorLorenz Bauer <[email protected]>2020-08-21 10:29:43 +0000
committerAlexei Starovoitov <[email protected]>2020-08-21 22:16:11 +0000
commit7b219da43f94a3b4d5a8aa4cc52b75b34f0301ec (patch)
tree9e8b69676747ae4417cb3110697a45ccd5898539 /tools/testing/selftests/bpf/prog_tests/sockmap_basic.c
parentlibbpf: Add perf_buffer APIs for better integration with outside epoll loop (diff)
downloadkernel-7b219da43f94a3b4d5a8aa4cc52b75b34f0301ec.tar.gz
kernel-7b219da43f94a3b4d5a8aa4cc52b75b34f0301ec.zip
net: sk_msg: Simplify sk_psock initialization
Initializing psock->sk_proto and other saved callbacks is only done in sk_psock_update_proto, after sk_psock_init has returned. The logic for this is difficult to follow, and needlessly complex. Instead, initialize psock->sk_proto whenever we allocate a new psock. Additionally, assert the following invariants: * The SK has no ULP: ULP does it's own finagling of sk->sk_prot * sk_user_data is unused: we need it to store sk_psock Protect our access to sk_user_data with sk_callback_lock, which is what other users like reuseport arrays, etc. do. The result is that an sk_psock is always fully initialized, and that psock->sk_proto is always the "original" struct proto. The latter allows us to use psock->sk_proto when initializing IPv6 TCP / UDP callbacks for sockmap. Signed-off-by: Lorenz Bauer <[email protected]> Signed-off-by: Alexei Starovoitov <[email protected]> Acked-by: John Fastabend <[email protected]> Link: https://lore.kernel.org/bpf/[email protected]
Diffstat (limited to 'tools/testing/selftests/bpf/prog_tests/sockmap_basic.c')
0 files changed, 0 insertions, 0 deletions