mirror of
https://github.com/torvalds/linux.git
synced 2025-12-07 20:06:24 +00:00
sock: redo the psock vs ULP protection check
Commit8a59f9d1e3("sock: Introduce sk->sk_prot->psock_update_sk_prot()") has moved the inet_csk_has_ulp(sk) check from sk_psock_init() to the new tcp_bpf_update_proto() function. I'm guessing that this was done to allow creating psocks for non-inet sockets. Unfortunately the destruction path for psock includes the ULP unwind, so we need to fail the sk_psock_init() itself. Otherwise if ULP is already present we'll notice that later, and call tcp_update_ulp() with the sk_proto of the ULP itself, which will most likely result in the ULP looping its callbacks. Fixes:8a59f9d1e3("sock: Introduce sk->sk_prot->psock_update_sk_prot()") Signed-off-by: Jakub Kicinski <kuba@kernel.org> Reviewed-by: John Fastabend <john.fastabend@gmail.com> Reviewed-by: Jakub Sitnicki <jakub@cloudflare.com> Tested-by: Jakub Sitnicki <jakub@cloudflare.com> Link: https://lore.kernel.org/r/20220620191353.1184629-2-kuba@kernel.org Signed-off-by: Paolo Abeni <pabeni@redhat.com>
This commit is contained in:
committed by
Paolo Abeni
parent
1b205d948f
commit
e34a07c0ae
@@ -921,6 +921,8 @@ static void tls_update(struct sock *sk, struct proto *p,
|
||||
{
|
||||
struct tls_context *ctx;
|
||||
|
||||
WARN_ON_ONCE(sk->sk_prot == p);
|
||||
|
||||
ctx = tls_get_ctx(sk);
|
||||
if (likely(ctx)) {
|
||||
ctx->sk_write_space = write_space;
|
||||
|
||||
Reference in New Issue
Block a user