ULP are only valid with TCP in ESTABLISHED states. Sockmap was not following this rule so add a fix to only allow ESTABLISHED states to be added from the userspace side. On the BPF side we continue to allow adding sockets to maps from sock_ops events, but only events that are triggered when entering the ESTABLISHED state. This blocks users from adding sockets to maps that will not be in the correct TCP state.
Also we stomped on the tcpv6_prot pointer overwriting with the tcp_prot. This was discovered by syzbot (thanks!) and not found by selftests because we only have local tests in selftest so even with ipv6 selftests we did not trigger the splat. Will follow up with IPv6 tests for selftest regardless it seems like a miss to not have any IPv6 selftests. Also these need to go to stable. There will be a small conflict on the second patch where we add check to the sockhash update function which did not exist until recently. --- John Fastabend (2): bpf: sockmap, fix crash when ipv6 sock is added bpf: sockmap only allow ESTABLISHED sock state kernel/bpf/sockmap.c | 56 ++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 52 insertions(+), 4 deletions(-) -- Signature