From aa2d68ff59606f676d232964a777aaaa8bab1655 Mon Sep 17 00:00:00 2001 From: Greg Kroah-Hartman Date: Sat, 23 Aug 2025 16:53:35 +0200 Subject: [PATCH] 6.6-stable patches added patches: mptcp-disable-add_addr-retransmission-when-timeout-is-0.patch mptcp-remove-duplicate-sk_reset_timer-call.patch selftests-mptcp-pm-check-flush-doesn-t-reset-limits.patch --- ...ddr-retransmission-when-timeout-is-0.patch | 98 +++++++++++++++++++ ...remove-duplicate-sk_reset_timer-call.patch | 57 +++++++++++ ...-pm-check-flush-doesn-t-reset-limits.patch | 50 ++++++++++ queue-6.6/series | 3 + 4 files changed, 208 insertions(+) create mode 100644 queue-6.6/mptcp-disable-add_addr-retransmission-when-timeout-is-0.patch create mode 100644 queue-6.6/mptcp-remove-duplicate-sk_reset_timer-call.patch create mode 100644 queue-6.6/selftests-mptcp-pm-check-flush-doesn-t-reset-limits.patch diff --git a/queue-6.6/mptcp-disable-add_addr-retransmission-when-timeout-is-0.patch b/queue-6.6/mptcp-disable-add_addr-retransmission-when-timeout-is-0.patch new file mode 100644 index 0000000000..9e577d036d --- /dev/null +++ b/queue-6.6/mptcp-disable-add_addr-retransmission-when-timeout-is-0.patch @@ -0,0 +1,98 @@ +From stable+bounces-172412-greg=kroah.com@vger.kernel.org Fri Aug 22 16:17:20 2025 +From: "Matthieu Baerts (NGI0)" +Date: Fri, 22 Aug 2025 16:11:02 +0200 +Subject: mptcp: disable add_addr retransmission when timeout is 0 +To: mptcp@lists.linux.dev, stable@vger.kernel.org, gregkh@linuxfoundation.org +Cc: Geliang Tang , sashal@kernel.org, Matthieu Baerts , Jakub Kicinski +Message-ID: <20250822141059.48927-7-matttbe@kernel.org> + +From: Geliang Tang + +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 +Signed-off-by: Geliang Tang +Reviewed-by: Matthieu Baerts (NGI0) +Signed-off-by: Matthieu Baerts (NGI0) +Link: https://patch.msgid.link/20250815-net-mptcp-misc-fixes-6-17-rc2-v1-5-521fe9957892@kernel.org +Signed-off-by: Jakub Kicinski +[ 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) +Signed-off-by: Greg Kroah-Hartman +--- + Documentation/networking/mptcp-sysctl.rst | 2 ++ + net/mptcp/pm_netlink.c | 13 ++++++++++--- + 2 files changed, 12 insertions(+), 3 deletions(-) + +--- 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. + +--- a/net/mptcp/pm_netlink.c ++++ b/net/mptcp/pm_netlink.c +@@ -294,6 +294,7 @@ static void mptcp_pm_add_timer(struct ti + 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); + +@@ -311,6 +312,10 @@ static void mptcp_pm_add_timer(struct ti + 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)) { +@@ -322,7 +327,7 @@ static void mptcp_pm_add_timer(struct ti + + 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); + +@@ -364,6 +369,7 @@ bool mptcp_pm_alloc_anno_list(struct mpt + 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); + +@@ -388,8 +394,9 @@ bool mptcp_pm_alloc_anno_list(struct mpt + + 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; + } diff --git a/queue-6.6/mptcp-remove-duplicate-sk_reset_timer-call.patch b/queue-6.6/mptcp-remove-duplicate-sk_reset_timer-call.patch new file mode 100644 index 0000000000..86fbf54b7c --- /dev/null +++ b/queue-6.6/mptcp-remove-duplicate-sk_reset_timer-call.patch @@ -0,0 +1,57 @@ +From stable+bounces-172411-greg=kroah.com@vger.kernel.org Fri Aug 22 16:15:31 2025 +From: "Matthieu Baerts (NGI0)" +Date: Fri, 22 Aug 2025 16:11:01 +0200 +Subject: mptcp: remove duplicate sk_reset_timer call +To: mptcp@lists.linux.dev, stable@vger.kernel.org, gregkh@linuxfoundation.org +Cc: Geliang Tang , sashal@kernel.org, "Matthieu Baerts (NGI0)" , Jakub Kicinski +Message-ID: <20250822141059.48927-6-matttbe@kernel.org> + +From: Geliang Tang + +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 +Reviewed-by: Matthieu Baerts (NGI0) +Signed-off-by: Matthieu Baerts (NGI0) +Link: https://patch.msgid.link/20250815-net-mptcp-misc-fixes-6-17-rc2-v1-4-521fe9957892@kernel.org +Signed-off-by: Jakub Kicinski +[ 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) +Signed-off-by: Greg Kroah-Hartman +--- + net/mptcp/pm_netlink.c | 5 ++--- + 1 file changed, 2 insertions(+), 3 deletions(-) + +--- a/net/mptcp/pm_netlink.c ++++ b/net/mptcp/pm_netlink.c +@@ -373,9 +373,7 @@ bool mptcp_pm_alloc_anno_list(struct mpt + 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); +@@ -389,6 +387,7 @@ bool mptcp_pm_alloc_anno_list(struct mpt + 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)); + diff --git a/queue-6.6/selftests-mptcp-pm-check-flush-doesn-t-reset-limits.patch b/queue-6.6/selftests-mptcp-pm-check-flush-doesn-t-reset-limits.patch new file mode 100644 index 0000000000..754a021177 --- /dev/null +++ b/queue-6.6/selftests-mptcp-pm-check-flush-doesn-t-reset-limits.patch @@ -0,0 +1,50 @@ +From stable+bounces-172413-greg=kroah.com@vger.kernel.org Fri Aug 22 16:17:21 2025 +From: "Matthieu Baerts (NGI0)" +Date: Fri, 22 Aug 2025 16:11:03 +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)" , sashal@kernel.org, Mat Martineau , Jakub Kicinski +Message-ID: <20250822141059.48927-8-matttbe@kernel.org> + +From: "Matthieu Baerts (NGI0)" + +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 +Signed-off-by: Matthieu Baerts (NGI0) +Link: https://patch.msgid.link/20250815-net-mptcp-misc-fixes-6-17-rc2-v1-3-521fe9957892@kernel.org +Signed-off-by: Jakub Kicinski +[ 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) +Signed-off-by: Greg Kroah-Hartman +--- + 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 +@@ -134,6 +134,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" + diff --git a/queue-6.6/series b/queue-6.6/series index efc6df1ec4..392787df2c 100644 --- a/queue-6.6/series +++ b/queue-6.6/series @@ -502,3 +502,6 @@ arm64-dts-ti-k3-am62-main-remove-emmc-high-speed-ddr-support.patch smb-server-split-ksmbd_rdma_stop_listening-out-of-ks.patch fs-buffer-fix-use-after-free-when-call-bh_read-helpe.patch use-uniform-permission-checks-for-all-mount-propagat.patch +mptcp-remove-duplicate-sk_reset_timer-call.patch +mptcp-disable-add_addr-retransmission-when-timeout-is-0.patch +selftests-mptcp-pm-check-flush-doesn-t-reset-limits.patch -- 2.47.3