From: Greg Kroah-Hartman Date: Mon, 8 Apr 2024 11:21:43 +0000 (+0200) Subject: 5.15-stable patches X-Git-Tag: v5.15.154~27 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=e90b6d67e593b03e6ed6e13b09e215e6b040a73f;p=thirdparty%2Fkernel%2Fstable-queue.git 5.15-stable patches added patches: mptcp-don-t-account-accept-of-non-mpc-client-as-fallback-to-tcp.patch --- diff --git a/queue-5.15/mptcp-don-t-account-accept-of-non-mpc-client-as-fallback-to-tcp.patch b/queue-5.15/mptcp-don-t-account-accept-of-non-mpc-client-as-fallback-to-tcp.patch new file mode 100644 index 00000000000..4bcf6818f24 --- /dev/null +++ b/queue-5.15/mptcp-don-t-account-accept-of-non-mpc-client-as-fallback-to-tcp.patch @@ -0,0 +1,93 @@ +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 | 3 +++ + tools/testing/selftests/net/mptcp/mptcp_connect.sh | 7 +++++++ + 3 files changed, 10 insertions(+), 3 deletions(-) + +--- a/net/mptcp/protocol.c ++++ b/net/mptcp/protocol.c +@@ -3018,9 +3018,6 @@ static struct sock *mptcp_accept(struct + sock_hold(new_mptcp_sock); + 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 +@@ -725,6 +725,9 @@ create_child: + goto dispose_child; + } + ++ if (fallback) ++ SUBFLOW_REQ_INC_STATS(req, MPTCP_MIB_MPCAPABLEPASSIVEFALLBACK); ++ + subflow_drop_ctx(child); + goto out; + } +--- a/tools/testing/selftests/net/mptcp/mptcp_connect.sh ++++ b/tools/testing/selftests/net/mptcp/mptcp_connect.sh +@@ -451,6 +451,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} \ +@@ -516,6 +517,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)) +@@ -560,6 +562,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-5.15/series b/queue-5.15/series index 3c37b486333..5e7032bc50e 100644 --- a/queue-5.15/series +++ b/queue-5.15/series @@ -684,3 +684,4 @@ riscv-fix-spurious-errors-from-__get-put_kernel_nofault.patch riscv-process-fix-kernel-gp-leakage.patch x86-bugs-fix-the-srso-mitigation-on-zen3-4.patch x86-retpoline-do-the-necessary-fixup-to-the-zen3-4-srso-return-thunk-for-srso.patch +mptcp-don-t-account-accept-of-non-mpc-client-as-fallback-to-tcp.patch