diff options
| author | Lorenz Bauer <[email protected]> | 2020-03-09 11:12:32 +0000 |
|---|---|---|
| committer | Daniel Borkmann <[email protected]> | 2020-03-09 21:34:58 +0000 |
| commit | 7b70973d7edb2f005511102d5a2e0116464a46a1 (patch) | |
| tree | ef6bdfbf69c5c495f1f1878eaf5000da0c0afa45 /net/ipv4/tcp_ulp.c | |
| parent | bpf: Fix bpf_prog_test_run_tracing for !CONFIG_NET (diff) | |
| download | kernel-7b70973d7edb2f005511102d5a2e0116464a46a1.tar.gz kernel-7b70973d7edb2f005511102d5a2e0116464a46a1.zip | |
bpf: sockmap: Only check ULP for TCP sockets
The sock map code checks that a socket does not have an active upper
layer protocol before inserting it into the map. This requires casting
via inet_csk, which isn't valid for UDP sockets.
Guard checks for ULP by checking inet_sk(sk)->is_icsk first.
Signed-off-by: Lorenz Bauer <[email protected]>
Signed-off-by: Daniel Borkmann <[email protected]>
Reviewed-by: Jakub Sitnicki <[email protected]>
Acked-by: John Fastabend <[email protected]>
Link: https://lore.kernel.org/bpf/[email protected]
Diffstat (limited to 'net/ipv4/tcp_ulp.c')
| -rw-r--r-- | net/ipv4/tcp_ulp.c | 7 |
1 files changed, 0 insertions, 7 deletions
diff --git a/net/ipv4/tcp_ulp.c b/net/ipv4/tcp_ulp.c index 2703f24c5d1a..7c27aa629af1 100644 --- a/net/ipv4/tcp_ulp.c +++ b/net/ipv4/tcp_ulp.c @@ -105,13 +105,6 @@ void tcp_update_ulp(struct sock *sk, struct proto *proto, { struct inet_connection_sock *icsk = inet_csk(sk); - if (!icsk->icsk_ulp_ops) { - sk->sk_write_space = write_space; - /* Pairs with lockless read in sk_clone_lock() */ - WRITE_ONCE(sk->sk_prot, proto); - return; - } - if (icsk->icsk_ulp_ops->update) icsk->icsk_ulp_ops->update(sk, proto, write_space); } |
