From: Greg Kroah-Hartman Date: Mon, 12 Aug 2024 15:50:59 +0000 (+0200) Subject: 6.6-stable patches X-Git-Tag: v6.1.105~27 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=4547d88d8cbdbf5eb088cb367e2e551f7eb36898;p=thirdparty%2Fkernel%2Fstable-queue.git 6.6-stable patches added patches: btrfs-fix-double-inode-unlock-for-direct-io-sync-writes.patch mptcp-pm-do-not-ignore-subflow-if-signal-flag-is-also-set.patch mptcp-pm-don-t-try-to-create-sf-if-alloc-failed.patch mptcp-pm-reduce-indentation-blocks.patch revert-selftests-mptcp-simult-flows-mark-unbalanced-tests-as-flaky.patch selftests-mptcp-join-ability-to-invert-add_addr-check.patch selftests-mptcp-join-test-both-signal-subflow.patch --- diff --git a/queue-6.6/btrfs-fix-double-inode-unlock-for-direct-io-sync-writes.patch b/queue-6.6/btrfs-fix-double-inode-unlock-for-direct-io-sync-writes.patch new file mode 100644 index 00000000000..1307d5c45c9 --- /dev/null +++ b/queue-6.6/btrfs-fix-double-inode-unlock-for-direct-io-sync-writes.patch @@ -0,0 +1,42 @@ +From e0391e92f9ab4fb3dbdeb139c967dcfa7ac4b115 Mon Sep 17 00:00:00 2001 +From: Filipe Manana +Date: Fri, 2 Aug 2024 09:38:51 +0100 +Subject: btrfs: fix double inode unlock for direct IO sync writes + +From: Filipe Manana + +commit e0391e92f9ab4fb3dbdeb139c967dcfa7ac4b115 upstream. + +If we do a direct IO sync write, at btrfs_sync_file(), and we need to skip +inode logging or we get an error starting a transaction or an error when +flushing delalloc, we end up unlocking the inode when we shouldn't under +the 'out_release_extents' label, and then unlock it again at +btrfs_direct_write(). + +Fix that by checking if we have to skip inode unlocking under that label. + +Reported-by: syzbot+7dbbb74af6291b5a5a8b@syzkaller.appspotmail.com +Link: https://lore.kernel.org/linux-btrfs/000000000000dfd631061eaeb4bc@google.com/ +Fixes: 939b656bc8ab ("btrfs: fix corruption after buffer fault in during direct IO append write") +Reviewed-by: Josef Bacik +Signed-off-by: Filipe Manana +Signed-off-by: David Sterba +Signed-off-by: Greg Kroah-Hartman +--- + fs/btrfs/file.c | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +--- a/fs/btrfs/file.c ++++ b/fs/btrfs/file.c +@@ -2038,7 +2038,10 @@ out: + + out_release_extents: + btrfs_release_log_ctx_extents(&ctx); +- btrfs_inode_unlock(BTRFS_I(inode), BTRFS_ILOCK_MMAP); ++ if (skip_ilock) ++ up_write(&BTRFS_I(inode)->i_mmap_lock); ++ else ++ btrfs_inode_unlock(BTRFS_I(inode), BTRFS_ILOCK_MMAP); + goto out; + } + diff --git a/queue-6.6/mptcp-pm-do-not-ignore-subflow-if-signal-flag-is-also-set.patch b/queue-6.6/mptcp-pm-do-not-ignore-subflow-if-signal-flag-is-also-set.patch new file mode 100644 index 00000000000..fa6d4a65237 --- /dev/null +++ b/queue-6.6/mptcp-pm-do-not-ignore-subflow-if-signal-flag-is-also-set.patch @@ -0,0 +1,103 @@ +From stable+bounces-66753-greg=kroah.com@vger.kernel.org Mon Aug 12 17:32:52 2024 +From: "Matthieu Baerts (NGI0)" +Date: Mon, 12 Aug 2024 17:30:54 +0200 +Subject: mptcp: pm: do not ignore 'subflow' if 'signal' flag is also set +To: mptcp@lists.linux.dev, stable@vger.kernel.org, gregkh@linuxfoundation.org +Cc: "Matthieu Baerts (NGI0)" , Paolo Abeni , Mat Martineau , Jakub Kicinski +Message-ID: <20240812153050.573404-10-matttbe@kernel.org> + +From: "Matthieu Baerts (NGI0)" + +commit 85df533a787bf07bf4367ce2a02b822ff1fba1a3 upstream. + +Up to the 'Fixes' commit, having an endpoint with both the 'signal' and +'subflow' flags, resulted in the creation of a subflow and an address +announcement using the address linked to this endpoint. After this +commit, only the address announcement was done, ignoring the 'subflow' +flag. + +That's because the same bitmap is used for the two flags. It is OK to +keep this single bitmap, the already selected local endpoint simply have +to be re-used, but not via select_local_address() not to look at the +just modified bitmap. + +Note that it is unusual to set the two flags together: creating a new +subflow using a new local address will implicitly advertise it to the +other peer. So in theory, no need to advertise it explicitly as well. +Maybe there are use-cases -- the subflow might not reach the other peer +that way, we can ask the other peer to try initiating the new subflow +without delay -- or very likely the user is confused, and put both flags +"just to be sure at least the right one is set". Still, if it is +allowed, the kernel should do what has been asked: using this endpoint +to announce the address and to create a new subflow from it. + +An alternative is to forbid the use of the two flags together, but +that's probably too late, there are maybe use-cases, and it was working +before. This patch will avoid people complaining subflows are not +created using the endpoint they added with the 'subflow' and 'signal' +flag. + +Note that with the current patch, the subflow might not be created in +some corner cases, e.g. if the 'subflows' limit was reached when sending +the ADD_ADDR, but changed later on. It is probably not worth splitting +id_avail_bitmap per target ('signal', 'subflow'), which will add another +large field to the msk "just" to track (again) endpoints. Anyway, +currently when the limits are changed, the kernel doesn't check if new +subflows can be created or removed, because we would need to keep track +of the received ADD_ADDR, and more. It sounds OK to assume that the +limits should be properly configured before establishing new +connections. + +Fixes: 86e39e04482b ("mptcp: keep track of local endpoint still available for each msk") +Cc: stable@vger.kernel.org +Suggested-by: Paolo Abeni +Reviewed-by: Mat Martineau +Signed-off-by: Matthieu Baerts (NGI0) +Link: https://patch.msgid.link/20240731-upstream-net-20240731-mptcp-endp-subflow-signal-v1-5-c8a9b036493b@kernel.org +Signed-off-by: Jakub Kicinski +Signed-off-by: Matthieu Baerts (NGI0) +Signed-off-by: Greg Kroah-Hartman +--- + net/mptcp/pm_netlink.c | 16 ++++++++++++---- + 1 file changed, 12 insertions(+), 4 deletions(-) + +--- a/net/mptcp/pm_netlink.c ++++ b/net/mptcp/pm_netlink.c +@@ -520,8 +520,8 @@ __lookup_addr(struct pm_nl_pernet *perne + + static void mptcp_pm_create_subflow_or_signal_addr(struct mptcp_sock *msk) + { ++ struct mptcp_pm_addr_entry *local, *signal_and_subflow = NULL; + struct sock *sk = (struct sock *)msk; +- struct mptcp_pm_addr_entry *local; + unsigned int add_addr_signal_max; + unsigned int local_addr_max; + struct pm_nl_pernet *pernet; +@@ -587,6 +587,9 @@ static void mptcp_pm_create_subflow_or_s + msk->pm.add_addr_signaled++; + mptcp_pm_announce_addr(msk, &local->addr, false); + mptcp_pm_nl_addr_send_ack(msk); ++ ++ if (local->flags & MPTCP_PM_ADDR_FLAG_SUBFLOW) ++ signal_and_subflow = local; + } + + subflow: +@@ -597,9 +600,14 @@ subflow: + bool fullmesh; + int i, nr; + +- local = select_local_address(pernet, msk); +- if (!local) +- break; ++ if (signal_and_subflow) { ++ local = signal_and_subflow; ++ signal_and_subflow = NULL; ++ } else { ++ local = select_local_address(pernet, msk); ++ if (!local) ++ break; ++ } + + fullmesh = !!(local->flags & MPTCP_PM_ADDR_FLAG_FULLMESH); + diff --git a/queue-6.6/mptcp-pm-don-t-try-to-create-sf-if-alloc-failed.patch b/queue-6.6/mptcp-pm-don-t-try-to-create-sf-if-alloc-failed.patch new file mode 100644 index 00000000000..d2ea68c5d09 --- /dev/null +++ b/queue-6.6/mptcp-pm-don-t-try-to-create-sf-if-alloc-failed.patch @@ -0,0 +1,71 @@ +From stable+bounces-66752-greg=kroah.com@vger.kernel.org Mon Aug 12 17:32:50 2024 +From: "Matthieu Baerts (NGI0)" +Date: Mon, 12 Aug 2024 17:30:53 +0200 +Subject: mptcp: pm: don't try to create sf if alloc failed +To: mptcp@lists.linux.dev, stable@vger.kernel.org, gregkh@linuxfoundation.org +Cc: "Matthieu Baerts (NGI0)" , Paolo Abeni , Mat Martineau , Jakub Kicinski +Message-ID: <20240812153050.573404-9-matttbe@kernel.org> + +From: "Matthieu Baerts (NGI0)" + +commit cd7c957f936f8cb80d03e5152f4013aae65bd986 upstream. + +It sounds better to avoid wasting cycles and / or put extreme memory +pressure on the system by trying to create new subflows if it was not +possible to add a new item in the announce list. + +While at it, a warning is now printed if the entry was already in the +list as it should not happen with the in-kernel path-manager. With this +PM, mptcp_pm_alloc_anno_list() should only fail in case of memory +pressure. + +Fixes: b6c08380860b ("mptcp: remove addr and subflow in PM netlink") +Cc: stable@vger.kernel.org +Suggested-by: Paolo Abeni +Reviewed-by: Mat Martineau +Signed-off-by: Matthieu Baerts (NGI0) +Link: https://patch.msgid.link/20240731-upstream-net-20240731-mptcp-endp-subflow-signal-v1-4-c8a9b036493b@kernel.org +Signed-off-by: Jakub Kicinski +Signed-off-by: Matthieu Baerts (NGI0) +Signed-off-by: Greg Kroah-Hartman +--- + net/mptcp/pm_netlink.c | 10 ++++++---- + 1 file changed, 6 insertions(+), 4 deletions(-) + +--- a/net/mptcp/pm_netlink.c ++++ b/net/mptcp/pm_netlink.c +@@ -353,7 +353,7 @@ bool mptcp_pm_alloc_anno_list(struct mpt + add_entry = mptcp_lookup_anno_list_by_saddr(msk, addr); + + if (add_entry) { +- if (mptcp_pm_is_kernel(msk)) ++ if (WARN_ON_ONCE(mptcp_pm_is_kernel(msk))) + return false; + + sk_reset_timer(sk, &add_entry->add_timer, +@@ -563,8 +563,6 @@ static void mptcp_pm_create_subflow_or_s + + /* check first for announce */ + if (msk->pm.add_addr_signaled < add_addr_signal_max) { +- local = select_signal_address(pernet, msk); +- + /* due to racing events on both ends we can reach here while + * previous add address is still running: if we invoke now + * mptcp_pm_announce_addr(), that will fail and the +@@ -575,11 +573,15 @@ static void mptcp_pm_create_subflow_or_s + if (msk->pm.addr_signal & BIT(MPTCP_ADD_ADDR_SIGNAL)) + return; + ++ local = select_signal_address(pernet, msk); + if (!local) + goto subflow; + ++ /* If the alloc fails, we are on memory pressure, not worth ++ * continuing, and trying to create subflows. ++ */ + if (!mptcp_pm_alloc_anno_list(msk, &local->addr)) +- goto subflow; ++ return; + + __clear_bit(local->addr.id, msk->pm.id_avail_bitmap); + msk->pm.add_addr_signaled++; diff --git a/queue-6.6/mptcp-pm-reduce-indentation-blocks.patch b/queue-6.6/mptcp-pm-reduce-indentation-blocks.patch new file mode 100644 index 00000000000..0cda1cc07f9 --- /dev/null +++ b/queue-6.6/mptcp-pm-reduce-indentation-blocks.patch @@ -0,0 +1,58 @@ +From stable+bounces-66751-greg=kroah.com@vger.kernel.org Mon Aug 12 17:32:49 2024 +From: "Matthieu Baerts (NGI0)" +Date: Mon, 12 Aug 2024 17:30:52 +0200 +Subject: mptcp: pm: reduce indentation blocks +To: mptcp@lists.linux.dev, stable@vger.kernel.org, gregkh@linuxfoundation.org +Cc: "Matthieu Baerts (NGI0)" , Paolo Abeni , Mat Martineau , Jakub Kicinski +Message-ID: <20240812153050.573404-8-matttbe@kernel.org> + +From: "Matthieu Baerts (NGI0)" + +commit c95eb32ced823a00be62202b43966b07b2f20b7f upstream. + +That will simplify the following commits. + +No functional changes intended. + +Suggested-by: Paolo Abeni +Reviewed-by: Mat Martineau +Signed-off-by: Matthieu Baerts (NGI0) +Link: https://patch.msgid.link/20240731-upstream-net-20240731-mptcp-endp-subflow-signal-v1-3-c8a9b036493b@kernel.org +Signed-off-by: Jakub Kicinski +Stable-dep-of: cd7c957f936f ("mptcp: pm: don't try to create sf if alloc failed") +Signed-off-by: Matthieu Baerts (NGI0) +Signed-off-by: Greg Kroah-Hartman +--- + net/mptcp/pm_netlink.c | 19 +++++++++++-------- + 1 file changed, 11 insertions(+), 8 deletions(-) + +--- a/net/mptcp/pm_netlink.c ++++ b/net/mptcp/pm_netlink.c +@@ -575,16 +575,19 @@ static void mptcp_pm_create_subflow_or_s + if (msk->pm.addr_signal & BIT(MPTCP_ADD_ADDR_SIGNAL)) + return; + +- if (local) { +- if (mptcp_pm_alloc_anno_list(msk, &local->addr)) { +- __clear_bit(local->addr.id, msk->pm.id_avail_bitmap); +- msk->pm.add_addr_signaled++; +- mptcp_pm_announce_addr(msk, &local->addr, false); +- mptcp_pm_nl_addr_send_ack(msk); +- } +- } ++ if (!local) ++ goto subflow; ++ ++ if (!mptcp_pm_alloc_anno_list(msk, &local->addr)) ++ goto subflow; ++ ++ __clear_bit(local->addr.id, msk->pm.id_avail_bitmap); ++ msk->pm.add_addr_signaled++; ++ mptcp_pm_announce_addr(msk, &local->addr, false); ++ mptcp_pm_nl_addr_send_ack(msk); + } + ++subflow: + /* check if should create a new subflow */ + while (msk->pm.local_addr_used < local_addr_max && + msk->pm.subflows < subflows_max) { diff --git a/queue-6.6/revert-selftests-mptcp-simult-flows-mark-unbalanced-tests-as-flaky.patch b/queue-6.6/revert-selftests-mptcp-simult-flows-mark-unbalanced-tests-as-flaky.patch new file mode 100644 index 00000000000..9d21890934e --- /dev/null +++ b/queue-6.6/revert-selftests-mptcp-simult-flows-mark-unbalanced-tests-as-flaky.patch @@ -0,0 +1,55 @@ +From stable+bounces-66756-greg=kroah.com@vger.kernel.org Mon Aug 12 17:32:58 2024 +From: "Matthieu Baerts (NGI0)" +Date: Mon, 12 Aug 2024 17:31:34 +0200 +Subject: Revert "selftests: mptcp: simult flows: mark 'unbalanced' tests as flaky" +To: stable@vger.kernel.org, gregkh@linuxfoundation.org +Cc: MPTCP Upstream , "Matthieu Baerts (NGI0)" +Message-ID: <20240812153133.574382-2-matttbe@kernel.org> + +From: "Matthieu Baerts (NGI0)" + +This reverts commit 052c9f0c140c78e5d6826688b5d2f33e19db0ae7. + +If the test doesn't pass, we can get this error: + + # ./simult_flows.sh: line 275: mptcp_lib_subtest_is_flaky: command not found + +This patch is not needed in v6.6: it is there to mark a test as "flaky", +but the MPTCP selftests infrastructure in v6.6 doesn't support them. So +it looks better to revert this patch. + +Signed-off-by: Matthieu Baerts (NGI0) +Signed-off-by: Greg Kroah-Hartman +--- + tools/testing/selftests/net/mptcp/simult_flows.sh | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +--- a/tools/testing/selftests/net/mptcp/simult_flows.sh ++++ b/tools/testing/selftests/net/mptcp/simult_flows.sh +@@ -262,7 +262,7 @@ run_test() + do_transfer $small $large $time + lret=$? + mptcp_lib_result_code "${lret}" "${msg}" +- if [ $lret -ne 0 ] && ! mptcp_lib_subtest_is_flaky; then ++ if [ $lret -ne 0 ]; then + ret=$lret + [ $bail -eq 0 ] || exit $ret + fi +@@ -272,7 +272,7 @@ run_test() + do_transfer $large $small $time + lret=$? + mptcp_lib_result_code "${lret}" "${msg}" +- if [ $lret -ne 0 ] && ! mptcp_lib_subtest_is_flaky; then ++ if [ $lret -ne 0 ]; then + ret=$lret + [ $bail -eq 0 ] || exit $ret + fi +@@ -305,7 +305,7 @@ run_test 10 10 0 0 "balanced bwidth" + run_test 10 10 1 25 "balanced bwidth with unbalanced delay" + + # we still need some additional infrastructure to pass the following test-cases +-MPTCP_LIB_SUBTEST_FLAKY=1 run_test 10 3 0 0 "unbalanced bwidth" ++run_test 10 3 0 0 "unbalanced bwidth" + run_test 10 3 1 25 "unbalanced bwidth with unbalanced delay" + run_test 10 3 25 1 "unbalanced bwidth with opposed, unbalanced delay" + diff --git a/queue-6.6/selftests-mptcp-join-ability-to-invert-add_addr-check.patch b/queue-6.6/selftests-mptcp-join-ability-to-invert-add_addr-check.patch new file mode 100644 index 00000000000..75aa8068dd0 --- /dev/null +++ b/queue-6.6/selftests-mptcp-join-ability-to-invert-add_addr-check.patch @@ -0,0 +1,146 @@ +From stable+bounces-66754-greg=kroah.com@vger.kernel.org Mon Aug 12 17:32:52 2024 +From: "Matthieu Baerts (NGI0)" +Date: Mon, 12 Aug 2024 17:30:55 +0200 +Subject: selftests: mptcp: join: ability to invert ADD_ADDR check +To: mptcp@lists.linux.dev, stable@vger.kernel.org, gregkh@linuxfoundation.org +Cc: "Matthieu Baerts (NGI0)" , Mat Martineau , Jakub Kicinski +Message-ID: <20240812153050.573404-11-matttbe@kernel.org> + +From: "Matthieu Baerts (NGI0)" + +commit bec1f3b119ebc613d08dfbcdbaef01a79aa7de92 upstream. + +In the following commit, the client will initiate the ADD_ADDR, instead +of the server. We need to way to verify the ADD_ADDR have been correctly +sent. + +Note: the default expected counters for when the port number is given +are never changed by the caller, no need to accept them as parameter +then. + +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: 86e39e04482b ("mptcp: keep track of local endpoint still available for each msk") +Reviewed-by: Mat Martineau +Signed-off-by: Matthieu Baerts (NGI0) +Link: https://patch.msgid.link/20240731-upstream-net-20240731-mptcp-endp-subflow-signal-v1-6-c8a9b036493b@kernel.org +Signed-off-by: Jakub Kicinski +Signed-off-by: Matthieu Baerts (NGI0) +Signed-off-by: Greg Kroah-Hartman +--- + tools/testing/selftests/net/mptcp/mptcp_join.sh | 40 +++++++++++++++--------- + 1 file changed, 26 insertions(+), 14 deletions(-) + +--- a/tools/testing/selftests/net/mptcp/mptcp_join.sh ++++ b/tools/testing/selftests/net/mptcp/mptcp_join.sh +@@ -1559,18 +1559,28 @@ chk_add_nr() + local add_nr=$1 + local echo_nr=$2 + local port_nr=${3:-0} +- local syn_nr=${4:-$port_nr} +- local syn_ack_nr=${5:-$port_nr} +- local ack_nr=${6:-$port_nr} +- local mis_syn_nr=${7:-0} +- local mis_ack_nr=${8:-0} ++ local ns_invert=${4:-""} ++ local syn_nr=$port_nr ++ local syn_ack_nr=$port_nr ++ local ack_nr=$port_nr ++ local mis_syn_nr=0 ++ local mis_ack_nr=0 ++ local ns_tx=$ns1 ++ local ns_rx=$ns2 ++ local extra_msg="" + local count + local timeout + +- timeout=$(ip netns exec $ns1 sysctl -n net.mptcp.add_addr_timeout) ++ if [[ $ns_invert = "invert" ]]; then ++ ns_tx=$ns2 ++ ns_rx=$ns1 ++ extra_msg="invert" ++ fi ++ ++ timeout=$(ip netns exec ${ns_tx} sysctl -n net.mptcp.add_addr_timeout) + + print_check "add" +- count=$(mptcp_lib_get_counter ${ns2} "MPTcpExtAddAddr") ++ count=$(mptcp_lib_get_counter ${ns_rx} "MPTcpExtAddAddr") + if [ -z "$count" ]; then + print_skip + # if the test configured a short timeout tolerate greater then expected +@@ -1582,7 +1592,7 @@ chk_add_nr() + fi + + print_check "echo" +- count=$(mptcp_lib_get_counter ${ns1} "MPTcpExtEchoAdd") ++ count=$(mptcp_lib_get_counter ${ns_tx} "MPTcpExtEchoAdd") + if [ -z "$count" ]; then + print_skip + elif [ "$count" != "$echo_nr" ]; then +@@ -1593,7 +1603,7 @@ chk_add_nr() + + if [ $port_nr -gt 0 ]; then + print_check "pt" +- count=$(mptcp_lib_get_counter ${ns2} "MPTcpExtPortAdd") ++ count=$(mptcp_lib_get_counter ${ns_rx} "MPTcpExtPortAdd") + if [ -z "$count" ]; then + print_skip + elif [ "$count" != "$port_nr" ]; then +@@ -1603,7 +1613,7 @@ chk_add_nr() + fi + + print_check "syn" +- count=$(mptcp_lib_get_counter ${ns1} "MPTcpExtMPJoinPortSynRx") ++ count=$(mptcp_lib_get_counter ${ns_tx} "MPTcpExtMPJoinPortSynRx") + if [ -z "$count" ]; then + print_skip + elif [ "$count" != "$syn_nr" ]; then +@@ -1614,7 +1624,7 @@ chk_add_nr() + fi + + print_check "synack" +- count=$(mptcp_lib_get_counter ${ns2} "MPTcpExtMPJoinPortSynAckRx") ++ count=$(mptcp_lib_get_counter ${ns_rx} "MPTcpExtMPJoinPortSynAckRx") + if [ -z "$count" ]; then + print_skip + elif [ "$count" != "$syn_ack_nr" ]; then +@@ -1625,7 +1635,7 @@ chk_add_nr() + fi + + print_check "ack" +- count=$(mptcp_lib_get_counter ${ns1} "MPTcpExtMPJoinPortAckRx") ++ count=$(mptcp_lib_get_counter ${ns_tx} "MPTcpExtMPJoinPortAckRx") + if [ -z "$count" ]; then + print_skip + elif [ "$count" != "$ack_nr" ]; then +@@ -1636,7 +1646,7 @@ chk_add_nr() + fi + + print_check "syn" +- count=$(mptcp_lib_get_counter ${ns1} "MPTcpExtMismatchPortSynRx") ++ count=$(mptcp_lib_get_counter ${ns_tx} "MPTcpExtMismatchPortSynRx") + if [ -z "$count" ]; then + print_skip + elif [ "$count" != "$mis_syn_nr" ]; then +@@ -1647,7 +1657,7 @@ chk_add_nr() + fi + + print_check "ack" +- count=$(mptcp_lib_get_counter ${ns1} "MPTcpExtMismatchPortAckRx") ++ count=$(mptcp_lib_get_counter ${ns_tx} "MPTcpExtMismatchPortAckRx") + if [ -z "$count" ]; then + print_skip + elif [ "$count" != "$mis_ack_nr" ]; then +@@ -1657,6 +1667,8 @@ chk_add_nr() + print_ok + fi + fi ++ ++ print_info "$extra_msg" + } + + chk_add_tx_nr() diff --git a/queue-6.6/selftests-mptcp-join-test-both-signal-subflow.patch b/queue-6.6/selftests-mptcp-join-test-both-signal-subflow.patch new file mode 100644 index 00000000000..bbe793cb73a --- /dev/null +++ b/queue-6.6/selftests-mptcp-join-test-both-signal-subflow.patch @@ -0,0 +1,68 @@ +From stable+bounces-66755-greg=kroah.com@vger.kernel.org Mon Aug 12 17:32:54 2024 +From: "Matthieu Baerts (NGI0)" +Date: Mon, 12 Aug 2024 17:30:56 +0200 +Subject: selftests: mptcp: join: test both signal & subflow +To: mptcp@lists.linux.dev, stable@vger.kernel.org, gregkh@linuxfoundation.org +Cc: "Matthieu Baerts (NGI0)" , Mat Martineau , Jakub Kicinski +Message-ID: <20240812153050.573404-12-matttbe@kernel.org> + +From: "Matthieu Baerts (NGI0)" + +commit 4d2868b5d191c74262f7407972d68d1bf3245d6a upstream. + +It should be quite uncommon to set both the subflow and the signal +flags: the initiator of the connection is typically the one creating new +subflows, not the other peer, then no need to announce additional local +addresses, and use it to create subflows. + +But some people might be confused about the flags, and set both "just to +be sure at least the right one is set". To verify the previous fix, and +avoid future regressions, this specific case is now validated: the +client announces a new address, and initiates a new subflow from the +same address. + +While working on this, another bug has been noticed, where the client +reset the new subflow because an ADD_ADDR echo got received as the 3rd +ACK: this new test also explicitly checks that no RST have been sent by +the client and server. + +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: 86e39e04482b ("mptcp: keep track of local endpoint still available for each msk") +Reviewed-by: Mat Martineau +Signed-off-by: Matthieu Baerts (NGI0) +Link: https://patch.msgid.link/20240731-upstream-net-20240731-mptcp-endp-subflow-signal-v1-7-c8a9b036493b@kernel.org +Signed-off-by: Jakub Kicinski +Signed-off-by: Matthieu Baerts (NGI0) +Signed-off-by: Greg Kroah-Hartman +--- + tools/testing/selftests/net/mptcp/mptcp_join.sh | 15 +++++++++++++++ + 1 file changed, 15 insertions(+) + +--- a/tools/testing/selftests/net/mptcp/mptcp_join.sh ++++ b/tools/testing/selftests/net/mptcp/mptcp_join.sh +@@ -2133,6 +2133,21 @@ signal_address_tests() + chk_add_nr 1 1 + fi + ++ # uncommon: subflow and signal flags on the same endpoint ++ # or because the user wrongly picked both, but still expects the client ++ # to create additional subflows ++ if reset "subflow and signal together"; then ++ pm_nl_set_limits $ns1 0 2 ++ pm_nl_set_limits $ns2 0 2 ++ pm_nl_add_endpoint $ns2 10.0.3.2 flags signal,subflow ++ run_tests $ns1 $ns2 10.0.1.1 ++ chk_join_nr 1 1 1 ++ chk_add_nr 1 1 0 invert # only initiated by ns2 ++ chk_add_nr 0 0 0 # none initiated by ns1 ++ chk_rst_nr 0 0 invert # no RST sent by the client ++ chk_rst_nr 0 0 # no RST sent by the server ++ fi ++ + # accept and use add_addr with additional subflows + if reset "multiple subflows and signal"; then + pm_nl_set_limits $ns1 0 3 diff --git a/queue-6.6/series b/queue-6.6/series index bbbbb4faa86..313310985d8 100644 --- a/queue-6.6/series +++ b/queue-6.6/series @@ -180,3 +180,10 @@ mm-hugetlb-fix-potential-race-in-__update_and_free_hugetlb_folio.patch nouveau-set-placement-to-original-placement-on-uvmm-validate.patch xfs-fix-log-recovery-buffer-allocation-for-the-legacy-h_size-fixup.patch drm-amd-display-defer-handling-mst-up-request-in-resume.patch +mptcp-pm-reduce-indentation-blocks.patch +mptcp-pm-don-t-try-to-create-sf-if-alloc-failed.patch +mptcp-pm-do-not-ignore-subflow-if-signal-flag-is-also-set.patch +selftests-mptcp-join-ability-to-invert-add_addr-check.patch +selftests-mptcp-join-test-both-signal-subflow.patch +revert-selftests-mptcp-simult-flows-mark-unbalanced-tests-as-flaky.patch +btrfs-fix-double-inode-unlock-for-direct-io-sync-writes.patch