bpf: tcp: Move assertions into tcp_bpf_get_proto
authorLorenz Bauer <lmb@cloudflare.com>
Mon, 9 Mar 2020 11:12:34 +0000 (11:12 +0000)
committerDaniel Borkmann <daniel@iogearbox.net>
Mon, 9 Mar 2020 21:34:58 +0000 (22:34 +0100)
commitd19da360ee0f3e6c1375391db1a724b66fd43312
treeb21f3e34ff2a865b68592c282f2148040cde2494
parent1a2e20132db7bb76dd4f97b8364bd167227dd15f
bpf: tcp: Move assertions into tcp_bpf_get_proto

We need to ensure that sk->sk_prot uses certain callbacks, so that
code that directly calls e.g. tcp_sendmsg in certain corner cases
works. To avoid spurious asserts, we must to do this only if
sk_psock_update_proto has not yet been called. The same invariants
apply for tcp_bpf_check_v6_needs_rebuild, so move the call as well.

Doing so allows us to merge tcp_bpf_init and tcp_bpf_reinit.

Signed-off-by: Lorenz Bauer <lmb@cloudflare.com>
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
Reviewed-by: Jakub Sitnicki <jakub@cloudflare.com>
Acked-by: John Fastabend <john.fastabend@gmail.com>
Link: https://lore.kernel.org/bpf/20200309111243.6982-4-lmb@cloudflare.com
include/net/tcp.h
net/core/sock_map.c
net/ipv4/tcp_bpf.c