From: Greg Kroah-Hartman Date: Mon, 8 Apr 2024 11:21:54 +0000 (+0200) Subject: 6.1-stable patches X-Git-Tag: v5.15.154~26 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=6350ce918a51afe1576d615b98d7aefff35752b4;p=thirdparty%2Fkernel%2Fstable-queue.git 6.1-stable patches added patches: mptcp-don-t-account-accept-of-non-mpc-client-as-fallback-to-tcp.patch selftests-mptcp-display-simult-in-extra_msg.patch --- diff --git a/queue-6.1/mptcp-don-t-account-accept-of-non-mpc-client-as-fallback-to-tcp.patch b/queue-6.1/mptcp-don-t-account-accept-of-non-mpc-client-as-fallback-to-tcp.patch new file mode 100644 index 00000000000..dc7cb83a6fb --- /dev/null +++ b/queue-6.1/mptcp-don-t-account-accept-of-non-mpc-client-as-fallback-to-tcp.patch @@ -0,0 +1,92 @@ +From 7a1b3490f47e88ec4cbde65f1a77a0f4bc972282 Mon Sep 17 00:00:00 2001 +From: Davide Caratti +Date: Fri, 29 Mar 2024 13:08:52 +0100 +Subject: mptcp: don't account accept() of non-MPC client as fallback to TCP + +From: Davide Caratti + +commit 7a1b3490f47e88ec4cbde65f1a77a0f4bc972282 upstream. + +Current MPTCP servers increment MPTcpExtMPCapableFallbackACK when they +accept non-MPC connections. As reported by Christoph, this is "surprising" +because the counter might become greater than MPTcpExtMPCapableSYNRX. + +MPTcpExtMPCapableFallbackACK counter's name suggests it should only be +incremented when a connection was seen using MPTCP options, then a +fallback to TCP has been done. Let's do that by incrementing it when +the subflow context of an inbound MPC connection attempt is dropped. +Also, update mptcp_connect.sh kselftest, to ensure that the +above MIB does not increment in case a pure TCP client connects to a +MPTCP server. + +Fixes: fc518953bc9c ("mptcp: add and use MIB counter infrastructure") +Cc: stable@vger.kernel.org +Reported-by: Christoph Paasch +Closes: https://github.com/multipath-tcp/mptcp_net-next/issues/449 +Signed-off-by: Davide Caratti +Reviewed-by: Mat Martineau +Reviewed-by: Matthieu Baerts (NGI0) +Signed-off-by: Matthieu Baerts (NGI0) +Link: https://lore.kernel.org/r/20240329-upstream-net-20240329-fallback-mib-v1-1-324a8981da48@kernel.org +Signed-off-by: Jakub Kicinski +Signed-off-by: Matthieu Baerts (NGI0) +Signed-off-by: Greg Kroah-Hartman +--- + net/mptcp/protocol.c | 3 --- + net/mptcp/subflow.c | 2 ++ + tools/testing/selftests/net/mptcp/mptcp_connect.sh | 7 +++++++ + 3 files changed, 9 insertions(+), 3 deletions(-) + +--- a/net/mptcp/protocol.c ++++ b/net/mptcp/protocol.c +@@ -3349,9 +3349,6 @@ static struct sock *mptcp_accept(struct + + newsk = new_mptcp_sock; + MPTCP_INC_STATS(sock_net(sk), MPTCP_MIB_MPCAPABLEPASSIVEACK); +- } else { +- MPTCP_INC_STATS(sock_net(sk), +- MPTCP_MIB_MPCAPABLEPASSIVEFALLBACK); + } + + out: +--- a/net/mptcp/subflow.c ++++ b/net/mptcp/subflow.c +@@ -816,6 +816,8 @@ dispose_child: + return child; + + fallback: ++ if (fallback) ++ SUBFLOW_REQ_INC_STATS(req, MPTCP_MIB_MPCAPABLEPASSIVEFALLBACK); + mptcp_subflow_drop_ctx(child); + return child; + } +--- a/tools/testing/selftests/net/mptcp/mptcp_connect.sh ++++ b/tools/testing/selftests/net/mptcp/mptcp_connect.sh +@@ -439,6 +439,7 @@ do_transfer() + local stat_cookierx_last=$(get_mib_counter "${listener_ns}" "TcpExtSyncookiesRecv") + local stat_csum_err_s=$(get_mib_counter "${listener_ns}" "MPTcpExtDataCsumErr") + local stat_csum_err_c=$(get_mib_counter "${connector_ns}" "MPTcpExtDataCsumErr") ++ local stat_tcpfb_last_l=$(get_mib_counter "${listener_ns}" "MPTcpExtMPCapableFallbackACK") + + timeout ${timeout_test} \ + ip netns exec ${listener_ns} \ +@@ -504,6 +505,7 @@ do_transfer() + local stat_cookietx_now=$(get_mib_counter "${listener_ns}" "TcpExtSyncookiesSent") + local stat_cookierx_now=$(get_mib_counter "${listener_ns}" "TcpExtSyncookiesRecv") + local stat_ooo_now=$(get_mib_counter "${listener_ns}" "TcpExtTCPOFOQueue") ++ local stat_tcpfb_now_l=$(get_mib_counter "${listener_ns}" "MPTcpExtMPCapableFallbackACK") + + expect_synrx=$((stat_synrx_last_l)) + expect_ackrx=$((stat_ackrx_last_l)) +@@ -548,6 +550,11 @@ do_transfer() + fi + fi + ++ if [ ${stat_ooo_now} -eq 0 ] && [ ${stat_tcpfb_last_l} -ne ${stat_tcpfb_now_l} ]; then ++ printf "[ FAIL ]\nunexpected fallback to TCP" ++ rets=1 ++ fi ++ + if [ $retc -eq 0 ] && [ $rets -eq 0 ]; then + printf "[ OK ]" + fi diff --git a/queue-6.1/selftests-mptcp-display-simult-in-extra_msg.patch b/queue-6.1/selftests-mptcp-display-simult-in-extra_msg.patch new file mode 100644 index 00000000000..ea7b14e409f --- /dev/null +++ b/queue-6.1/selftests-mptcp-display-simult-in-extra_msg.patch @@ -0,0 +1,56 @@ +From 629b35a225b0d49fbcff3b5c22e3b983c7c7b36f Mon Sep 17 00:00:00 2001 +From: Geliang Tang +Date: Wed, 25 Oct 2023 16:37:11 -0700 +Subject: selftests: mptcp: display simult in extra_msg + +From: Geliang Tang + +commit 629b35a225b0d49fbcff3b5c22e3b983c7c7b36f upstream. + +Just like displaying "invert" after "Info: ", "simult" should be +displayed too when rm_subflow_nr doesn't match the expect value in +chk_rm_nr(): + + syn [ ok ] + synack [ ok ] + ack [ ok ] + add [ ok ] + echo [ ok ] + rm [ ok ] + rmsf [ ok ] 3 in [2:4] + Info: invert simult + + syn [ ok ] + synack [ ok ] + ack [ ok ] + add [ ok ] + echo [ ok ] + rm [ ok ] + rmsf [ ok ] + Info: invert + +Reviewed-by: Matthieu Baerts +Signed-off-by: Geliang Tang +Signed-off-by: Mat Martineau +Link: https://lore.kernel.org/r/20231025-send-net-next-20231025-v1-10-db8f25f798eb@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 | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +--- a/tools/testing/selftests/net/mptcp/mptcp_join.sh ++++ b/tools/testing/selftests/net/mptcp/mptcp_join.sh +@@ -1771,7 +1771,10 @@ chk_rm_nr() + # in case of simult flush, the subflow removal count on each side is + # unreliable + count=$((count + cnt)) +- [ "$count" != "$rm_subflow_nr" ] && suffix="$count in [$rm_subflow_nr:$((rm_subflow_nr*2))]" ++ if [ "$count" != "$rm_subflow_nr" ]; then ++ suffix="$count in [$rm_subflow_nr:$((rm_subflow_nr*2))]" ++ extra_msg="$extra_msg simult" ++ fi + if [ $count -ge "$rm_subflow_nr" ] && \ + [ "$count" -le "$((rm_subflow_nr *2 ))" ]; then + echo -n "[ ok ] $suffix" diff --git a/queue-6.1/series b/queue-6.1/series index 41ecfa4a0f1..575ff602aa1 100644 --- a/queue-6.1/series +++ b/queue-6.1/series @@ -132,3 +132,5 @@ smb-client-fix-potential-uaf-in-is_valid_oplock_break.patch smb-client-fix-potential-uaf-in-smb2_is_network_name_deleted.patch smb-client-fix-potential-uaf-in-cifs_signal_cifsd_for_reconnect.patch selftests-mptcp-join-fix-dev-in-check_endpoint.patch +mptcp-don-t-account-accept-of-non-mpc-client-as-fallback-to-tcp.patch +selftests-mptcp-display-simult-in-extra_msg.patch