tcp_bpf: Don't let child socket inherit parent protocol ops on copy
authorJakub Sitnicki <jakub@cloudflare.com>
Tue, 18 Feb 2020 17:10:15 +0000 (17:10 +0000)
committerDaniel Borkmann <daniel@iogearbox.net>
Fri, 21 Feb 2020 21:29:45 +0000 (22:29 +0100)
commite80251555f0befd1271e74b080bccf0ff0348bfc
tree3387dd45af325c1929a160a8fab7b84dd0142e08
parentf1ff5ce2cd5ef3335f19c0f6576582c87045b04f
tcp_bpf: Don't let child socket inherit parent protocol ops on copy

Prepare for cloning listening sockets that have their protocol callbacks
overridden by sk_msg. Child sockets must not inherit parent callbacks that
access state stored in sk_user_data owned by the parent.

Restore the child socket protocol callbacks before it gets hashed and any
of the callbacks can get invoked.

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