Thanks for all the reviews so far! I've fixed the identified bug and addressed feedback as much as possible. I've not taken up Jakub's suggestion to get rid of sk_psock_hooks_init. My intention is to encapsulate initializing both v4 and v6 protos. Really, it's down to personal preference, and I'm happy to remove it if others prefer Jakub's approach. I'm also still eager for a solution that requires less machinery. Changes since v1: - Check newsk->sk_prot in tcp_bpf_clone - Fix compilation with BPF_STREAM_PARSER disabled - Use spin_lock_init instead of static initializer - Elaborate on TCPF_SYN_RECV - Cosmetic changes to TEST macros, and more tests - Add Jakub and me as maintainers Lorenz Bauer (9): bpf: sockmap: only check ULP for TCP sockets bpf: tcp: guard declarations with CONFIG_NET_SOCK_MSG bpf: sockmap: move generic sockmap hooks from BPF TCP skmsg: introduce sk_psock_hooks bpf: sockmap: allow UDP sockets selftests: bpf: don't listen() on UDP sockets selftests: bpf: add tests for UDP sockets in sockmap selftests: bpf: enable UDP sockmap reuseport tests bpf, doc: update maintainers for L7 BPF MAINTAINERS | 3 + include/linux/bpf.h | 4 +- include/linux/skmsg.h | 72 +++---- include/linux/udp.h | 4 + include/net/tcp.h | 18 +- net/core/skmsg.c | 55 +++++ net/core/sock_map.c | 160 ++++++++++---- net/ipv4/Makefile | 1 + net/ipv4/tcp_bpf.c | 169 +++------------ net/ipv4/udp_bpf.c | 53 +++++ .../bpf/prog_tests/select_reuseport.c | 6 - .../selftests/bpf/prog_tests/sockmap_listen.c | 204 +++++++++++++----- 12 files changed, 465 insertions(+), 284 deletions(-) create mode 100644 net/ipv4/udp_bpf.c -- 2.20.1