mptcp.lists.linux.dev archive mirror
 help / color / mirror / Atom feed
* [PATCH 6.1.y 0/3] mptcp: fix recent failed backports (20250822)
@ 2025-08-22 14:11 Matthieu Baerts (NGI0)
  2025-08-22 14:11 ` [PATCH 6.1.y 1/3] mptcp: remove duplicate sk_reset_timer call Matthieu Baerts (NGI0)
                   ` (2 more replies)
  0 siblings, 3 replies; 6+ messages in thread
From: Matthieu Baerts (NGI0) @ 2025-08-22 14:11 UTC (permalink / raw)
  To: mptcp, stable, gregkh; +Cc: Matthieu Baerts (NGI0), sashal

Greg recently reported the following patches could not be applied
without conflicts in this tree:

 - 5d13349472ac ("mptcp: remove duplicate sk_reset_timer call")
 - f5ce0714623c ("mptcp: disable add_addr retransmission when timeout is 0")
 - 452690be7de2 ("selftests: mptcp: pm: check flush doesn't reset limits")

Conflicts have been resolved, and documented in each patch.

Geliang Tang (2):
  mptcp: remove duplicate sk_reset_timer call
  mptcp: disable add_addr retransmission when timeout is 0

Matthieu Baerts (NGI0) (1):
  selftests: mptcp: pm: check flush doesn't reset limits

 Documentation/networking/mptcp-sysctl.rst      |  2 ++
 net/mptcp/pm_netlink.c                         | 18 ++++++++++++------
 .../testing/selftests/net/mptcp/pm_netlink.sh  |  1 +
 3 files changed, 15 insertions(+), 6 deletions(-)

-- 
2.50.0


^ permalink raw reply	[flat|nested] 6+ messages in thread

* [PATCH 6.1.y 1/3] mptcp: remove duplicate sk_reset_timer call
  2025-08-22 14:11 [PATCH 6.1.y 0/3] mptcp: fix recent failed backports (20250822) Matthieu Baerts (NGI0)
@ 2025-08-22 14:11 ` Matthieu Baerts (NGI0)
  2025-08-24  7:11   ` Greg KH
  2025-08-22 14:11 ` [PATCH 6.1.y 2/3] mptcp: disable add_addr retransmission when timeout is 0 Matthieu Baerts (NGI0)
  2025-08-22 14:11 ` [PATCH 6.1.y 3/3] selftests: mptcp: pm: check flush doesn't reset limits Matthieu Baerts (NGI0)
  2 siblings, 1 reply; 6+ messages in thread
From: Matthieu Baerts (NGI0) @ 2025-08-22 14:11 UTC (permalink / raw)
  To: mptcp, stable, gregkh
  Cc: Geliang Tang, sashal, Matthieu Baerts (NGI0), Jakub Kicinski

From: Geliang Tang <tanggeliang@kylinos.cn>

commit 5d13349472ac8abcbcb94407969aa0fdc2e1f1be upstream.

sk_reset_timer() was called twice in mptcp_pm_alloc_anno_list.

Simplify the code by using a 'goto' statement to eliminate the
duplication.

Note that this is not a fix, but it will help backporting the following
patch. The same "Fixes" tag has been added for this reason.

Fixes: 93f323b9cccc ("mptcp: add a new sysctl add_addr_timeout")
Cc: stable@vger.kernel.org
Signed-off-by: Geliang Tang <tanggeliang@kylinos.cn>
Reviewed-by: Matthieu Baerts (NGI0) <matttbe@kernel.org>
Signed-off-by: Matthieu Baerts (NGI0) <matttbe@kernel.org>
Link: https://patch.msgid.link/20250815-net-mptcp-misc-fixes-6-17-rc2-v1-4-521fe9957892@kernel.org
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
[ Before commit e4c28e3d5c09 ("mptcp: pm: move generic PM helpers to
  pm.c"), mptcp_pm_alloc_anno_list() was in pm_netlink.c. The same patch
  can be applied there without conflicts. ]
Signed-off-by: Matthieu Baerts (NGI0) <matttbe@kernel.org>
---
 net/mptcp/pm_netlink.c | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/net/mptcp/pm_netlink.c b/net/mptcp/pm_netlink.c
index bb1a02e3dc3f..59d6e701d854 100644
--- a/net/mptcp/pm_netlink.c
+++ b/net/mptcp/pm_netlink.c
@@ -383,9 +383,7 @@ bool mptcp_pm_alloc_anno_list(struct mptcp_sock *msk,
 		if (WARN_ON_ONCE(mptcp_pm_is_kernel(msk)))
 			return false;
 
-		sk_reset_timer(sk, &add_entry->add_timer,
-			       jiffies + mptcp_get_add_addr_timeout(net));
-		return true;
+		goto reset_timer;
 	}
 
 	add_entry = kmalloc(sizeof(*add_entry), GFP_ATOMIC);
@@ -399,6 +397,7 @@ bool mptcp_pm_alloc_anno_list(struct mptcp_sock *msk,
 	add_entry->retrans_times = 0;
 
 	timer_setup(&add_entry->add_timer, mptcp_pm_add_timer, 0);
+reset_timer:
 	sk_reset_timer(sk, &add_entry->add_timer,
 		       jiffies + mptcp_get_add_addr_timeout(net));
 
-- 
2.50.0


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [PATCH 6.1.y 2/3] mptcp: disable add_addr retransmission when timeout is 0
  2025-08-22 14:11 [PATCH 6.1.y 0/3] mptcp: fix recent failed backports (20250822) Matthieu Baerts (NGI0)
  2025-08-22 14:11 ` [PATCH 6.1.y 1/3] mptcp: remove duplicate sk_reset_timer call Matthieu Baerts (NGI0)
@ 2025-08-22 14:11 ` Matthieu Baerts (NGI0)
  2025-08-22 14:11 ` [PATCH 6.1.y 3/3] selftests: mptcp: pm: check flush doesn't reset limits Matthieu Baerts (NGI0)
  2 siblings, 0 replies; 6+ messages in thread
From: Matthieu Baerts (NGI0) @ 2025-08-22 14:11 UTC (permalink / raw)
  To: mptcp, stable, gregkh
  Cc: Geliang Tang, sashal, Matthieu Baerts, Jakub Kicinski

From: Geliang Tang <tanggeliang@kylinos.cn>

commit f5ce0714623cffd00bf2a83e890d09c609b7f50a upstream.

When add_addr_timeout was set to 0, this caused the ADD_ADDR to be
retransmitted immediately, which looks like a buggy behaviour. Instead,
interpret 0 as "no retransmissions needed".

The documentation is updated to explicitly state that setting the timeout
to 0 disables retransmission.

Fixes: 93f323b9cccc ("mptcp: add a new sysctl add_addr_timeout")
Cc: stable@vger.kernel.org
Suggested-by: Matthieu Baerts <matttbe@kernel.org>
Signed-off-by: Geliang Tang <tanggeliang@kylinos.cn>
Reviewed-by: Matthieu Baerts (NGI0) <matttbe@kernel.org>
Signed-off-by: Matthieu Baerts (NGI0) <matttbe@kernel.org>
Link: https://patch.msgid.link/20250815-net-mptcp-misc-fixes-6-17-rc2-v1-5-521fe9957892@kernel.org
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
[ Before commit e4c28e3d5c09 ("mptcp: pm: move generic PM helpers to
  pm.c"), mptcp_pm_alloc_anno_list() was in pm_netlink.c. The same patch
  can be applied there without conflicts. ]
Signed-off-by: Matthieu Baerts (NGI0) <matttbe@kernel.org>
---
 Documentation/networking/mptcp-sysctl.rst |  2 ++
 net/mptcp/pm_netlink.c                    | 13 ++++++++++---
 2 files changed, 12 insertions(+), 3 deletions(-)

diff --git a/Documentation/networking/mptcp-sysctl.rst b/Documentation/networking/mptcp-sysctl.rst
index 213510698014..722b4395e91b 100644
--- a/Documentation/networking/mptcp-sysctl.rst
+++ b/Documentation/networking/mptcp-sysctl.rst
@@ -20,6 +20,8 @@ add_addr_timeout - INTEGER (seconds)
 	resent to an MPTCP peer that has not acknowledged a previous
 	ADD_ADDR message.
 
+	Do not retransmit if set to 0.
+
 	The default value matches TCP_RTO_MAX. This is a per-namespace
 	sysctl.
 
diff --git a/net/mptcp/pm_netlink.c b/net/mptcp/pm_netlink.c
index 59d6e701d854..cf9244a3644f 100644
--- a/net/mptcp/pm_netlink.c
+++ b/net/mptcp/pm_netlink.c
@@ -304,6 +304,7 @@ static void mptcp_pm_add_timer(struct timer_list *timer)
 	struct mptcp_pm_add_entry *entry = from_timer(entry, timer, add_timer);
 	struct mptcp_sock *msk = entry->sock;
 	struct sock *sk = (struct sock *)msk;
+	unsigned int timeout;
 
 	pr_debug("msk=%p\n", msk);
 
@@ -321,6 +322,10 @@ static void mptcp_pm_add_timer(struct timer_list *timer)
 		goto out;
 	}
 
+	timeout = mptcp_get_add_addr_timeout(sock_net(sk));
+	if (!timeout)
+		goto out;
+
 	spin_lock_bh(&msk->pm.lock);
 
 	if (!mptcp_pm_should_add_signal_addr(msk)) {
@@ -332,7 +337,7 @@ static void mptcp_pm_add_timer(struct timer_list *timer)
 
 	if (entry->retrans_times < ADD_ADDR_RETRANS_MAX)
 		sk_reset_timer(sk, timer,
-			       jiffies + mptcp_get_add_addr_timeout(sock_net(sk)));
+			       jiffies + timeout);
 
 	spin_unlock_bh(&msk->pm.lock);
 
@@ -374,6 +379,7 @@ bool mptcp_pm_alloc_anno_list(struct mptcp_sock *msk,
 	struct mptcp_pm_add_entry *add_entry = NULL;
 	struct sock *sk = (struct sock *)msk;
 	struct net *net = sock_net(sk);
+	unsigned int timeout;
 
 	lockdep_assert_held(&msk->pm.lock);
 
@@ -398,8 +404,9 @@ bool mptcp_pm_alloc_anno_list(struct mptcp_sock *msk,
 
 	timer_setup(&add_entry->add_timer, mptcp_pm_add_timer, 0);
 reset_timer:
-	sk_reset_timer(sk, &add_entry->add_timer,
-		       jiffies + mptcp_get_add_addr_timeout(net));
+	timeout = mptcp_get_add_addr_timeout(net);
+	if (timeout)
+		sk_reset_timer(sk, &add_entry->add_timer, jiffies + timeout);
 
 	return true;
 }
-- 
2.50.0


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [PATCH 6.1.y 3/3] selftests: mptcp: pm: check flush doesn't reset limits
  2025-08-22 14:11 [PATCH 6.1.y 0/3] mptcp: fix recent failed backports (20250822) Matthieu Baerts (NGI0)
  2025-08-22 14:11 ` [PATCH 6.1.y 1/3] mptcp: remove duplicate sk_reset_timer call Matthieu Baerts (NGI0)
  2025-08-22 14:11 ` [PATCH 6.1.y 2/3] mptcp: disable add_addr retransmission when timeout is 0 Matthieu Baerts (NGI0)
@ 2025-08-22 14:11 ` Matthieu Baerts (NGI0)
  2025-08-24  7:11   ` Patch "selftests: mptcp: pm: check flush doesn't reset limits" has been added to the 6.1-stable tree gregkh
  2 siblings, 1 reply; 6+ messages in thread
From: Matthieu Baerts (NGI0) @ 2025-08-22 14:11 UTC (permalink / raw)
  To: mptcp, stable, gregkh
  Cc: Matthieu Baerts (NGI0), sashal, Mat Martineau, Jakub Kicinski

commit 452690be7de2f91cc0de68cb9e95252875b33503 upstream.

This modification is linked to the parent commit where the received
ADD_ADDR limit was accidentally reset when the endpoints were flushed.

To validate that, the test is now flushing endpoints after having set
new limits, and before checking them.

The 'Fixes' tag here below is the same as the one from the previous
commit: this patch here is not fixing anything wrong in the selftests,
but it validates the previous fix for an issue introduced by this commit
ID.

Fixes: 01cacb00b35c ("mptcp: add netlink-based PM")
Cc: stable@vger.kernel.org
Reviewed-by: Mat Martineau <martineau@kernel.org>
Signed-off-by: Matthieu Baerts (NGI0) <matttbe@kernel.org>
Link: https://patch.msgid.link/20250815-net-mptcp-misc-fixes-6-17-rc2-v1-3-521fe9957892@kernel.org
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
[ Conflicts in pm_netlink.sh, because some refactoring have been done
  later on: commit 3188309c8ceb ("selftests: mptcp: netlink:
  add 'limits' helpers") and commit c99d57d0007a ("selftests: mptcp: use
  pm_nl endpoint ops") are not in this version. The same operation can
  still be done at the same place, without using the new helper. ]
Signed-off-by: Matthieu Baerts (NGI0) <matttbe@kernel.org>
---
 tools/testing/selftests/net/mptcp/pm_netlink.sh | 1 +
 1 file changed, 1 insertion(+)

diff --git a/tools/testing/selftests/net/mptcp/pm_netlink.sh b/tools/testing/selftests/net/mptcp/pm_netlink.sh
index d02e0d63a8f9..1b0ed849c617 100755
--- a/tools/testing/selftests/net/mptcp/pm_netlink.sh
+++ b/tools/testing/selftests/net/mptcp/pm_netlink.sh
@@ -131,6 +131,7 @@ ip netns exec $ns1 ./pm_nl_ctl limits 1 9
 check "ip netns exec $ns1 ./pm_nl_ctl limits" "$default_limits" "subflows above hard limit"
 
 ip netns exec $ns1 ./pm_nl_ctl limits 8 8
+ip netns exec $ns1 ./pm_nl_ctl flush
 check "ip netns exec $ns1 ./pm_nl_ctl limits" "accept 8
 subflows 8" "set limits"
 
-- 
2.50.0


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [PATCH 6.1.y 1/3] mptcp: remove duplicate sk_reset_timer call
  2025-08-22 14:11 ` [PATCH 6.1.y 1/3] mptcp: remove duplicate sk_reset_timer call Matthieu Baerts (NGI0)
@ 2025-08-24  7:11   ` Greg KH
  0 siblings, 0 replies; 6+ messages in thread
From: Greg KH @ 2025-08-24  7:11 UTC (permalink / raw)
  To: Matthieu Baerts (NGI0)
  Cc: mptcp, stable, Geliang Tang, sashal, Jakub Kicinski

On Fri, Aug 22, 2025 at 04:11:26PM +0200, Matthieu Baerts (NGI0) wrote:
> From: Geliang Tang <tanggeliang@kylinos.cn>
> 
> commit 5d13349472ac8abcbcb94407969aa0fdc2e1f1be upstream.
> 
> sk_reset_timer() was called twice in mptcp_pm_alloc_anno_list.
> 
> Simplify the code by using a 'goto' statement to eliminate the
> duplication.
> 
> Note that this is not a fix, but it will help backporting the following
> patch. The same "Fixes" tag has been added for this reason.
> 
> Fixes: 93f323b9cccc ("mptcp: add a new sysctl add_addr_timeout")
> Cc: stable@vger.kernel.org
> Signed-off-by: Geliang Tang <tanggeliang@kylinos.cn>
> Reviewed-by: Matthieu Baerts (NGI0) <matttbe@kernel.org>
> Signed-off-by: Matthieu Baerts (NGI0) <matttbe@kernel.org>
> Link: https://patch.msgid.link/20250815-net-mptcp-misc-fixes-6-17-rc2-v1-4-521fe9957892@kernel.org
> Signed-off-by: Jakub Kicinski <kuba@kernel.org>
> [ Before commit e4c28e3d5c09 ("mptcp: pm: move generic PM helpers to
>   pm.c"), mptcp_pm_alloc_anno_list() was in pm_netlink.c. The same patch
>   can be applied there without conflicts. ]
> Signed-off-by: Matthieu Baerts (NGI0) <matttbe@kernel.org>
> ---
>  net/mptcp/pm_netlink.c | 5 ++---
>  1 file changed, 2 insertions(+), 3 deletions(-)
> 
> diff --git a/net/mptcp/pm_netlink.c b/net/mptcp/pm_netlink.c
> index bb1a02e3dc3f..59d6e701d854 100644
> --- a/net/mptcp/pm_netlink.c
> +++ b/net/mptcp/pm_netlink.c
> @@ -383,9 +383,7 @@ bool mptcp_pm_alloc_anno_list(struct mptcp_sock *msk,
>  		if (WARN_ON_ONCE(mptcp_pm_is_kernel(msk)))
>  			return false;
>  
> -		sk_reset_timer(sk, &add_entry->add_timer,
> -			       jiffies + mptcp_get_add_addr_timeout(net));
> -		return true;
> +		goto reset_timer;
>  	}
>  
>  	add_entry = kmalloc(sizeof(*add_entry), GFP_ATOMIC);
> @@ -399,6 +397,7 @@ bool mptcp_pm_alloc_anno_list(struct mptcp_sock *msk,
>  	add_entry->retrans_times = 0;
>  
>  	timer_setup(&add_entry->add_timer, mptcp_pm_add_timer, 0);
> +reset_timer:
>  	sk_reset_timer(sk, &add_entry->add_timer,
>  		       jiffies + mptcp_get_add_addr_timeout(net));
>  
> -- 
> 2.50.0
> 
> 

Did not apply, something feels off here...


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Patch "selftests: mptcp: pm: check flush doesn't reset limits" has been added to the 6.1-stable tree
  2025-08-22 14:11 ` [PATCH 6.1.y 3/3] selftests: mptcp: pm: check flush doesn't reset limits Matthieu Baerts (NGI0)
@ 2025-08-24  7:11   ` gregkh
  0 siblings, 0 replies; 6+ messages in thread
From: gregkh @ 2025-08-24  7:11 UTC (permalink / raw)
  To: gregkh, kuba, martineau, matttbe, mptcp, sashal; +Cc: stable-commits


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

    selftests: mptcp: pm: check flush doesn't reset limits

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:
     selftests-mptcp-pm-check-flush-doesn-t-reset-limits.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 stable+bounces-172418-greg=kroah.com@vger.kernel.org Fri Aug 22 16:17:38 2025
From: "Matthieu Baerts (NGI0)" <matttbe@kernel.org>
Date: Fri, 22 Aug 2025 16:11:28 +0200
Subject: selftests: mptcp: pm: check flush doesn't reset limits
To: mptcp@lists.linux.dev, stable@vger.kernel.org, gregkh@linuxfoundation.org
Cc: "Matthieu Baerts (NGI0)" <matttbe@kernel.org>, sashal@kernel.org, Mat Martineau <martineau@kernel.org>, Jakub Kicinski <kuba@kernel.org>
Message-ID: <20250822141124.49727-8-matttbe@kernel.org>

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

commit 452690be7de2f91cc0de68cb9e95252875b33503 upstream.

This modification is linked to the parent commit where the received
ADD_ADDR limit was accidentally reset when the endpoints were flushed.

To validate that, the test is now flushing endpoints after having set
new limits, and before checking them.

The 'Fixes' tag here below is the same as the one from the previous
commit: this patch here is not fixing anything wrong in the selftests,
but it validates the previous fix for an issue introduced by this commit
ID.

Fixes: 01cacb00b35c ("mptcp: add netlink-based PM")
Cc: stable@vger.kernel.org
Reviewed-by: Mat Martineau <martineau@kernel.org>
Signed-off-by: Matthieu Baerts (NGI0) <matttbe@kernel.org>
Link: https://patch.msgid.link/20250815-net-mptcp-misc-fixes-6-17-rc2-v1-3-521fe9957892@kernel.org
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
[ Conflicts in pm_netlink.sh, because some refactoring have been done
  later on: commit 3188309c8ceb ("selftests: mptcp: netlink:
  add 'limits' helpers") and commit c99d57d0007a ("selftests: mptcp: use
  pm_nl endpoint ops") are not in this version. The same operation can
  still be done at the same place, without using the new helper. ]
Signed-off-by: Matthieu Baerts (NGI0) <matttbe@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
 tools/testing/selftests/net/mptcp/pm_netlink.sh |    1 +
 1 file changed, 1 insertion(+)

--- a/tools/testing/selftests/net/mptcp/pm_netlink.sh
+++ b/tools/testing/selftests/net/mptcp/pm_netlink.sh
@@ -131,6 +131,7 @@ ip netns exec $ns1 ./pm_nl_ctl limits 1
 check "ip netns exec $ns1 ./pm_nl_ctl limits" "$default_limits" "subflows above hard limit"
 
 ip netns exec $ns1 ./pm_nl_ctl limits 8 8
+ip netns exec $ns1 ./pm_nl_ctl flush
 check "ip netns exec $ns1 ./pm_nl_ctl limits" "accept 8
 subflows 8" "set limits"
 


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

queue-6.1/mptcp-plug-races-between-subflow-fail-and-subflow-creation.patch
queue-6.1/mptcp-reset-fallback-status-gracefully-at-disconnect-time.patch
queue-6.1/mptcp-disable-add_addr-retransmission-when-timeout-is-0.patch
queue-6.1/mptcp-drop-skb-if-mptcp-skb-extension-allocation-fails.patch
queue-6.1/mptcp-pm-kernel-flush-do-not-reset-add_addr-limit.patch
queue-6.1/selftests-mptcp-pm-check-flush-doesn-t-reset-limits.patch
queue-6.1/mptcp-make-fallback-action-and-fallback-decision-atomic.patch

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2025-08-24  7:11 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-08-22 14:11 [PATCH 6.1.y 0/3] mptcp: fix recent failed backports (20250822) Matthieu Baerts (NGI0)
2025-08-22 14:11 ` [PATCH 6.1.y 1/3] mptcp: remove duplicate sk_reset_timer call Matthieu Baerts (NGI0)
2025-08-24  7:11   ` Greg KH
2025-08-22 14:11 ` [PATCH 6.1.y 2/3] mptcp: disable add_addr retransmission when timeout is 0 Matthieu Baerts (NGI0)
2025-08-22 14:11 ` [PATCH 6.1.y 3/3] selftests: mptcp: pm: check flush doesn't reset limits Matthieu Baerts (NGI0)
2025-08-24  7:11   ` Patch "selftests: mptcp: pm: check flush doesn't reset limits" has been added to the 6.1-stable tree gregkh

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).