bpf: Sockmap/tls, push write_space updates through ulp updates
authorJohn Fastabend <john.fastabend@gmail.com>
Sat, 11 Jan 2020 06:12:01 +0000 (06:12 +0000)
committerDaniel Borkmann <daniel@iogearbox.net>
Wed, 15 Jan 2020 22:26:13 +0000 (23:26 +0100)
commit33bfe20dd7117dd81fd896a53f743a233e1ad64f
tree441203009c7ea09d634127efe18c3f029335230b
parent7e81a35302066c5a00b4c72d83e3ea4cad6eeb5b
bpf: Sockmap/tls, push write_space updates through ulp updates

When sockmap sock with TLS enabled is removed we cleanup bpf/psock state
and call tcp_update_ulp() to push updates to TLS ULP on top. However, we
don't push the write_space callback up and instead simply overwrite the
op with the psock stored previous op. This may or may not be correct so
to ensure we don't overwrite the TLS write space hook pass this field to
the ULP and have it fixup the ctx.

This completes a previous fix that pushed the ops through to the ULP
but at the time missed doing this for write_space, presumably because
write_space TLS hook was added around the same time.

Fixes: 95fa145479fbc ("bpf: sockmap/tls, close can race with map free")
Signed-off-by: John Fastabend <john.fastabend@gmail.com>
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
Reviewed-by: Jakub Sitnicki <jakub@cloudflare.com>
Acked-by: Jonathan Lemon <jonathan.lemon@gmail.com>
Cc: stable@vger.kernel.org
Link: https://lore.kernel.org/bpf/20200111061206.8028-4-john.fastabend@gmail.com
include/linux/skmsg.h
include/net/tcp.h
net/ipv4/tcp_ulp.c
net/tls/tls_main.c