[PATCH 6.1.y] mptcp: continue marking the first subflow as UNCONNECTED

Matthieu Baerts (NGI0) posted 1 patch 2 months, 1 week ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/multipath-tcp/mptcp_net-next tags/patchew/20240228172121.243458-2-matttbe@kernel.org
net/mptcp/protocol.c | 2 ++
1 file changed, 2 insertions(+)
[PATCH 6.1.y] mptcp: continue marking the first subflow as UNCONNECTED
Posted by Matthieu Baerts (NGI0) 2 months, 1 week ago
After the 'Fixes' commit mentioned below, which is a partial backport,
the MPTCP worker was no longer marking the first subflow as "UNCONNECTED"
when the socket was transitioning to TCP_CLOSE state.

As a result, in v6.1, it was no longer possible to reconnect to the just
disconnected socket. Continue to do that like before, only for the first
subflow.

A few refactoring have been done around the 'msk->subflow' in later
versions, and it looks like this is not needed to do that there, but
still needed in v6.1. Without that, the 'disconnect' tests from the
mptcp_connect.sh selftest fail: they repeat the transfer 3 times by
reconnecting to the server each time.

Fixes: 7857e35ef10e ("mptcp: get rid of msk->subflow")
Signed-off-by: Matthieu Baerts (NGI0) <matttbe@kernel.org>
---
Notes:
 - This is specific to the 6.1 version having the partial backport.
---
 net/mptcp/protocol.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/net/mptcp/protocol.c b/net/mptcp/protocol.c
index cdabb00648bd2..125825db642cc 100644
--- a/net/mptcp/protocol.c
+++ b/net/mptcp/protocol.c
@@ -2440,6 +2440,8 @@ static void __mptcp_close_ssk(struct sock *sk, struct sock *ssk,
 	need_push = (flags & MPTCP_CF_PUSH) && __mptcp_retransmit_pending_data(sk);
 	if (!dispose_it) {
 		__mptcp_subflow_disconnect(ssk, subflow, flags);
+		if (msk->subflow && ssk == msk->subflow->sk)
+			msk->subflow->state = SS_UNCONNECTED;
 		release_sock(ssk);
 
 		goto out;
-- 
2.43.0
Re: [PATCH 6.1.y] mptcp: continue marking the first subflow as UNCONNECTED
Posted by Greg KH 2 months ago
On Wed, Feb 28, 2024 at 06:21:21PM +0100, Matthieu Baerts (NGI0) wrote:
> After the 'Fixes' commit mentioned below, which is a partial backport,
> the MPTCP worker was no longer marking the first subflow as "UNCONNECTED"
> when the socket was transitioning to TCP_CLOSE state.
> 
> As a result, in v6.1, it was no longer possible to reconnect to the just
> disconnected socket. Continue to do that like before, only for the first
> subflow.
> 
> A few refactoring have been done around the 'msk->subflow' in later
> versions, and it looks like this is not needed to do that there, but
> still needed in v6.1. Without that, the 'disconnect' tests from the
> mptcp_connect.sh selftest fail: they repeat the transfer 3 times by
> reconnecting to the server each time.
> 
> Fixes: 7857e35ef10e ("mptcp: get rid of msk->subflow")
> Signed-off-by: Matthieu Baerts (NGI0) <matttbe@kernel.org>
> ---
> Notes:
>  - This is specific to the 6.1 version having the partial backport.

All 6.1 backports now queued up, thanks!

greg k-h
Re: mptcp: continue marking the first subflow as UNCONNECTED: Build Failure
Posted by MPTCP CI 2 months, 1 week ago
Hi Matthieu,

Thank you for your modifications, that's great!

But sadly, our CI spotted some issues with it when trying to build it.

You can find more details there:

  https://patchwork.kernel.org/project/mptcp/patch/20240228172121.243458-2-matttbe@kernel.org/
  https://github.com/multipath-tcp/mptcp_net-next/actions/runs/8084822552

Status: cancelled
Initiator: MPTCPimporter
Commits: https://github.com/multipath-tcp/mptcp_net-next/commits/2c89af223cba

Feel free to reply to this email if you cannot access logs, if you need
some support to fix the error, if this doesn't seem to be caused by your
modifications or if the error is a false positive one.

Cheers,
MPTCP GH Action bot
Bot operated by Matthieu Baerts (NGI0 Core)
Patch "mptcp: continue marking the first subflow as UNCONNECTED" has been added to the 5.4-stable tree
Posted by gregkh@linuxfoundation.org 2 months ago

This is a note to let you know that I've just added the patch titled

    mptcp: continue marking the first subflow as UNCONNECTED

to the 5.4-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     mptcp-continue-marking-the-first-subflow-as-unconnected.patch
and it can be found in the queue-5.4 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@vger.kernel.org> know about it.


From matttbe@kernel.org  Mon Mar  4 09:10:32 2024
From: "Matthieu Baerts (NGI0)" <matttbe@kernel.org>
Date: Wed, 28 Feb 2024 18:21:21 +0100
Subject: mptcp: continue marking the first subflow as UNCONNECTED
To: stable@vger.kernel.org, gregkh@linuxfoundation.org, sashal@kernel.org
Cc: MPTCP Upstream <mptcp@lists.linux.dev>, "Matthieu Baerts (NGI0)" <matttbe@kernel.org>
Message-ID: <20240228172121.243458-2-matttbe@kernel.org>

From: "Matthieu Baerts (NGI0)" <matttbe@kernel.org>

After the 'Fixes' commit mentioned below, which is a partial backport,
the MPTCP worker was no longer marking the first subflow as "UNCONNECTED"
when the socket was transitioning to TCP_CLOSE state.

As a result, in v6.1, it was no longer possible to reconnect to the just
disconnected socket. Continue to do that like before, only for the first
subflow.

A few refactoring have been done around the 'msk->subflow' in later
versions, and it looks like this is not needed to do that there, but
still needed in v6.1. Without that, the 'disconnect' tests from the
mptcp_connect.sh selftest fail: they repeat the transfer 3 times by
reconnecting to the server each time.

Fixes: 7857e35ef10e ("mptcp: get rid of msk->subflow")
Signed-off-by: Matthieu Baerts (NGI0) <matttbe@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
 net/mptcp/protocol.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/net/mptcp/protocol.c b/net/mptcp/protocol.c
index cdabb00648bd2..125825db642cc 100644
--- a/net/mptcp/protocol.c
+++ b/net/mptcp/protocol.c
@@ -2440,6 +2440,8 @@ static void __mptcp_close_ssk(struct sock *sk, struct sock *ssk,
 	need_push = (flags & MPTCP_CF_PUSH) && __mptcp_retransmit_pending_data(sk);
 	if (!dispose_it) {
 		__mptcp_subflow_disconnect(ssk, subflow, flags);
+		if (msk->subflow && ssk == msk->subflow->sk)
+			msk->subflow->state = SS_UNCONNECTED;
 		release_sock(ssk);
 
 		goto out;
-- 
2.43.0



Patches currently in stable-queue which might be from matttbe@kernel.org are

queue-5.4/mptcp-continue-marking-the-first-subflow-as-unconnected.patch
Re: Patch "mptcp: continue marking the first subflow as UNCONNECTED" has been added to the 5.4-stable tree
Posted by Greg KH 2 months ago
On Mon, Mar 04, 2024 at 09:11:22AM +0100, gregkh@linuxfoundation.org wrote:
> 
> This is a note to let you know that I've just added the patch titled
> 
>     mptcp: continue marking the first subflow as UNCONNECTED
> 
> to the 5.4-stable tree which can be found at:
>     http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

Oops, nope, my fault, this doesn't go to 5.4.y, sorry for the noise.

greg k-h
Patch "mptcp: continue marking the first subflow as UNCONNECTED" has been added to the 6.1-stable tree
Posted by gregkh@linuxfoundation.org 2 months ago

This is a note to let you know that I've just added the patch titled

    mptcp: continue marking the first subflow as UNCONNECTED

to the 6.1-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     mptcp-continue-marking-the-first-subflow-as-unconnected.patch
and it can be found in the queue-6.1 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@vger.kernel.org> know about it.


From matttbe@kernel.org  Mon Mar  4 09:10:32 2024
From: "Matthieu Baerts (NGI0)" <matttbe@kernel.org>
Date: Wed, 28 Feb 2024 18:21:21 +0100
Subject: mptcp: continue marking the first subflow as UNCONNECTED
To: stable@vger.kernel.org, gregkh@linuxfoundation.org, sashal@kernel.org
Cc: MPTCP Upstream <mptcp@lists.linux.dev>, "Matthieu Baerts (NGI0)" <matttbe@kernel.org>
Message-ID: <20240228172121.243458-2-matttbe@kernel.org>

From: "Matthieu Baerts (NGI0)" <matttbe@kernel.org>

After the 'Fixes' commit mentioned below, which is a partial backport,
the MPTCP worker was no longer marking the first subflow as "UNCONNECTED"
when the socket was transitioning to TCP_CLOSE state.

As a result, in v6.1, it was no longer possible to reconnect to the just
disconnected socket. Continue to do that like before, only for the first
subflow.

A few refactoring have been done around the 'msk->subflow' in later
versions, and it looks like this is not needed to do that there, but
still needed in v6.1. Without that, the 'disconnect' tests from the
mptcp_connect.sh selftest fail: they repeat the transfer 3 times by
reconnecting to the server each time.

Fixes: 7857e35ef10e ("mptcp: get rid of msk->subflow")
Signed-off-by: Matthieu Baerts (NGI0) <matttbe@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
 net/mptcp/protocol.c |    2 ++
 1 file changed, 2 insertions(+)

--- a/net/mptcp/protocol.c
+++ b/net/mptcp/protocol.c
@@ -2440,6 +2440,8 @@ static void __mptcp_close_ssk(struct soc
 	need_push = (flags & MPTCP_CF_PUSH) && __mptcp_retransmit_pending_data(sk);
 	if (!dispose_it) {
 		__mptcp_subflow_disconnect(ssk, subflow, flags);
+		if (msk->subflow && ssk == msk->subflow->sk)
+			msk->subflow->state = SS_UNCONNECTED;
 		release_sock(ssk);
 
 		goto out;


Patches currently in stable-queue which might be from matttbe@kernel.org are

queue-6.1/mptcp-continue-marking-the-first-subflow-as-unconnected.patch
queue-6.1/mptcp-fix-data-races-on-local_id.patch
queue-6.1/mptcp-fix-duplicate-subflow-creation.patch
queue-6.1/mptcp-fix-data-races-on-remote_id.patch