All of lore.kernel.org
 help / color / mirror / Atom feed
From: Mat Martineau <mathew.j.martineau@linux.intel.com>
To: Florian Westphal <fw@strlen.de>
Cc: mptcp@lists.linux.dev, Paolo Abeni <pabeni@redhat.com>
Subject: Re: [PATCH] mptcp: fix splat when closing unaccepted socket
Date: Mon, 3 May 2021 12:04:19 -0700 (PDT)	[thread overview]
Message-ID: <5d40b9cc-991d-40f7-ba51-6a11dc3e705d@linux.intel.com> (raw)
In-Reply-To: <20210503100224.22433-1-fw@strlen.de>

On Mon, 3 May 2021, Florian Westphal wrote:

> From: Paolo Abeni <pabeni@redhat.com>
>
> If userspace exits before calling accept() on a listener that had at least
> one new connection ready, we get:
>
>   Attempt to release TCP socket in state 8
>
> This happens because the mptcp socket gets cloned when the TCP connection
> is ready, but the socket is never exposed to userspace.
>
> The client additionally sends a DATA_FIN, which brings connection into
> CLOSE_WAIT state.  This in turn prevents the orphan+state reset fixup
> in mptcp_sock_destruct() from doing its job.
>
> Fixes: 3721b9b64676b ("mptcp: Track received DATA_FIN sequence number and add related helpers")
> Closes: https://github.com/multipath-tcp/mptcp_net-next/issues/185
> Tested-by: Florian Westphal <fw@strlen.de>
> Signed-off-by: Paolo Abeni <pabeni@redhat.com>
> ---
> net/mptcp/subflow.c | 3 +--
> 1 file changed, 1 insertion(+), 2 deletions(-)
>
> diff --git a/net/mptcp/subflow.c b/net/mptcp/subflow.c
> index 15620bafc544..01f30f8ea710 100644
> --- a/net/mptcp/subflow.c
> +++ b/net/mptcp/subflow.c
> @@ -546,8 +546,7 @@ static void mptcp_sock_destruct(struct sock *sk)
> 	 * ESTABLISHED state and will not have the SOCK_DEAD flag.
> 	 * Both result in warnings from inet_sock_destruct.
> 	 */
> -
> -	if (sk->sk_state == TCP_ESTABLISHED) {
> +	if ((1 << sk->sk_state) & (TCPF_ESTABLISHED | TCPF_CLOSE_WAIT)) {
> 		sk->sk_state = TCP_CLOSE;
> 		WARN_ON_ONCE(sk->sk_socket);
> 		sock_orphan(sk);
> -- 
> 2.26.3

Thanks Paolo and Florian. Patch looks good - should go to -net right?

Reviewed-by: Mat Martineau <mathew.j.martineau@linux.intel.com>


--
Mat Martineau
Intel

  reply	other threads:[~2021-05-03 19:04 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-05-03 10:02 [PATCH] mptcp: fix splat when closing unaccepted socket Florian Westphal
2021-05-03 19:04 ` Mat Martineau [this message]
2021-05-03 20:09   ` Florian Westphal
2021-05-04  6:50 ` Matthieu Baerts

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=5d40b9cc-991d-40f7-ba51-6a11dc3e705d@linux.intel.com \
    --to=mathew.j.martineau@linux.intel.com \
    --cc=fw@strlen.de \
    --cc=mptcp@lists.linux.dev \
    --cc=pabeni@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.