From nobody Thu Nov 27 12:35:51 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 6EFE02FFDF0; Tue, 18 Nov 2025 07:20:57 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763450457; cv=none; b=FtFHpJXSIjypU4FERdxyPHVb0gEFD6V3AXO/TYGxn2dv+OLu/n6vU9mRvyczD8cooniVL/FWATWn8/uLuIIZ3ecRC147pNlwsNwDdYX2bm4Wkm68nKgUaA2JvRdFeDc2G8Aq8Yz19lMWkWwYYOAabQ1fyYPmq+6nGWNAyEt07y0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763450457; c=relaxed/simple; bh=7RQrEW1CfmBda2GkqQbYPBiwe4jx2dSDSaRxEgqyLBg=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=cH25ZqFJeIrXqU7b8+ERZ+AwCbWc58nyDuPzrTIlGyCgj4KMnZ+NShVCljcPP2jm4nic3h/kdGkzTTLB6SNYxifyL93rFbu5VHjGyik5D55QhkOwDg8cJR1nqhCDpOhlXipiE4T9RIBUQPZ5X+Tf6n99DvJdAfN0u2Sbx/byCIM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=ErKtVkne; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="ErKtVkne" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 920C7C4CEFB; Tue, 18 Nov 2025 07:20:54 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1763450457; bh=7RQrEW1CfmBda2GkqQbYPBiwe4jx2dSDSaRxEgqyLBg=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=ErKtVknetW2qEYsqnCUFV+OAAPRpFYwZPlzqejdpKq6apKFIzhjEAOq37iOhMri8z TyPOpo77lWNoOAOR9dAE7B8TVNcl91AwIGUJNt4hIbBAi6ru5k8b3yM/WGY2ks582h npmy7Te1fL/yMOB51qsvGqRwivKRIwGOJ7eiHmD/c/JZZRbylJ8AvK2JJTBZ2oK7R9 dtbODscE2xjfY+O/fev8OmkreJmis9nm+TcBnBWI/+n1wM8Vr+axAwTyYQ/+LmiH/u jRSv97bZoMoYuOpDYHXIZseW40o/XJ50txDbbAJtPcAk8Ij7syoCYBHlDJOIPlU8UU HieDS+GaqgbCA== From: "Matthieu Baerts (NGI0)" Date: Tue, 18 Nov 2025 08:20:19 +0100 Subject: [PATCH net 01/11] mptcp: fix ack generation for fallback msk Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20251118-net-mptcp-misc-fixes-6-18-rc6-v1-1-806d3781c95f@kernel.org> References: <20251118-net-mptcp-misc-fixes-6-18-rc6-v1-0-806d3781c95f@kernel.org> In-Reply-To: <20251118-net-mptcp-misc-fixes-6-18-rc6-v1-0-806d3781c95f@kernel.org> To: Mat Martineau , Geliang Tang , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman , Shuah Khan , Florian Westphal Cc: netdev@vger.kernel.org, mptcp@lists.linux.dev, linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, "Matthieu Baerts (NGI0)" , stable@vger.kernel.org X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=2791; i=matttbe@kernel.org; h=from:subject:message-id; bh=lc7FDuUKuHm3lzaRCFNaKyj2lL5wrR+1cMxKKPMz0ls=; b=owGbwMvMwCVWo/Th0Gd3rumMp9WSGDJl5NxuXAwO/WBq0PLe7dIF2WvGVxRMEnMjEiR/Tc97x hvZJ3iio5SFQYyLQVZMkUW6LTJ/5vMq3hIvPwuYOaxMIEMYuDgFYCJ+vYwMnwzOGR5Z/v/BGyeL j8vZmWrY3VtvLVzz9Cef3tq5D+tiCxj+ZwcnbdOa9HH6qkVrtG+9zPkSV/HpS77GDtfXv8Mm7q3 4zw4A X-Developer-Key: i=matttbe@kernel.org; a=openpgp; fpr=E8CB85F76877057A6E27F77AF6B7824F4269A073 From: Paolo Abeni mptcp_cleanup_rbuf() needs to know the last most recent, mptcp-level rcv_wnd sent, and such information is tracked into the msk->old_wspace field, updated at ack transmission time by mptcp_write_options(). Fallback socket do not add any mptcp options, such helper is never invoked, and msk->old_wspace value remain stale. That in turn makes ack generation at recvmsg() time quite random. Address the issue ensuring mptcp_write_options() is invoked even for fallback sockets, and just update the needed info in such a case. The issue went unnoticed for a long time, as mptcp currently overshots the fallback socket receive buffer autotune significantly. It is going to change in the near future. Fixes: e3859603ba13 ("mptcp: better msk receive window updates") Cc: stable@vger.kernel.org Closes: https://github.com/multipath-tcp/mptcp_net-next/issues/594 Signed-off-by: Paolo Abeni Reviewed-by: Geliang Tang Reviewed-by: Matthieu Baerts (NGI0) Signed-off-by: Matthieu Baerts (NGI0) --- net/mptcp/options.c | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/net/mptcp/options.c b/net/mptcp/options.c index 1103b3341a70..8a63bd00807d 100644 --- a/net/mptcp/options.c +++ b/net/mptcp/options.c @@ -838,8 +838,11 @@ bool mptcp_established_options(struct sock *sk, struct= sk_buff *skb, =20 opts->suboptions =3D 0; =20 + /* Force later mptcp_write_options(), but do not use any actual + * option space. + */ if (unlikely(__mptcp_check_fallback(msk) && !mptcp_check_infinite_map(skb= ))) - return false; + return true; =20 if (unlikely(skb && TCP_SKB_CB(skb)->tcp_flags & TCPHDR_RST)) { if (mptcp_established_options_fastclose(sk, &opt_size, remaining, opts) = || @@ -1319,6 +1322,20 @@ static void mptcp_set_rwin(struct tcp_sock *tp, stru= ct tcphdr *th) WRITE_ONCE(msk->old_wspace, tp->rcv_wnd); } =20 +static void mptcp_track_rwin(struct tcp_sock *tp) +{ + const struct sock *ssk =3D (const struct sock *)tp; + struct mptcp_subflow_context *subflow; + struct mptcp_sock *msk; + + if (!ssk) + return; + + subflow =3D mptcp_subflow_ctx(ssk); + msk =3D mptcp_sk(subflow->conn); + WRITE_ONCE(msk->old_wspace, tp->rcv_wnd); +} + __sum16 __mptcp_make_csum(u64 data_seq, u32 subflow_seq, u16 data_len, __w= sum sum) { struct csum_pseudo_header header; @@ -1611,6 +1628,10 @@ void mptcp_write_options(struct tcphdr *th, __be32 *= ptr, struct tcp_sock *tp, opts->reset_transient, opts->reset_reason); return; + } else if (unlikely(!opts->suboptions)) { + /* Fallback to TCP */ + mptcp_track_rwin(tp); + return; } =20 if (OPTION_MPTCP_PRIO & opts->suboptions) { --=20 2.51.0 From nobody Thu Nov 27 12:35:51 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 758C33016EF; Tue, 18 Nov 2025 07:21:00 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763450460; cv=none; b=qzWixsAbz1DlTh1lVq5I3Ayixndp6/XMnBzgObuHR0egoBweHSZwae8rGylah/z518f+/Fq3SRsAetORSaJqc/jgbd6qrxRQIyqEVfbnL8oi3GAkR4BUTLZFOc7UjcuZOlsRBPdI1BpgT6OWFsNZkfXe6xaCS9o2CUxmGn02Xnc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763450460; c=relaxed/simple; bh=H+7z3LlqAEaoG8+SZgoVpEBuA0hMlOA03G0LG84/a/k=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=jPFZKQ4kQskdop+YHrivpOBxV20ifBX6b0gyonTXrDb0oGcaMm1A9YHSRkvlAILIM8IJEGLe3FjG3HyxsnRHBB2DiZKFQXH2+ZARPV+W22jtqk1/PddO4XY9oxYl5fhfXLo6XzIvRARwOWB25+pnQT2r4S1aiDD6v0FuSlSgsjc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=TJp7fqsl; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="TJp7fqsl" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 855DEC116B1; Tue, 18 Nov 2025 07:20:57 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1763450460; bh=H+7z3LlqAEaoG8+SZgoVpEBuA0hMlOA03G0LG84/a/k=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=TJp7fqslfG5XAkOKK3ocQResSMpmZ7BheKL2NITJ9nnAnB23IkFLjwx778Enq/nBg YZaIbDF9hOYzR9QlRu/6dcWM8iuQVB7l9UQg2k4NfHWTGbXhSH4PKfL8purwywYMmU b02QWqaDYWnyn8hgq2eS1obHUYSDWdfnMT56mSlwqCkYxRPkLmq+Srbri0oqIT6cek 9TuRXusgvUkGnC+Wrth9Wj/hfIZCyCCrSV8d7jV9pnlINcauDUi2X7cFdadelbHNVG 1B7T/nspCNjFmRVo2zk9UCq80wW5cWwNgGkMPmJLYWZ5xynGgSVwp0aod9j+bwKmuf bRD+Lr/Y2GjJQ== From: "Matthieu Baerts (NGI0)" Date: Tue, 18 Nov 2025 08:20:20 +0100 Subject: [PATCH net 02/11] mptcp: avoid unneeded subflow-level drops Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20251118-net-mptcp-misc-fixes-6-18-rc6-v1-2-806d3781c95f@kernel.org> References: <20251118-net-mptcp-misc-fixes-6-18-rc6-v1-0-806d3781c95f@kernel.org> In-Reply-To: <20251118-net-mptcp-misc-fixes-6-18-rc6-v1-0-806d3781c95f@kernel.org> To: Mat Martineau , Geliang Tang , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman , Shuah Khan , Florian Westphal Cc: netdev@vger.kernel.org, mptcp@lists.linux.dev, linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, "Matthieu Baerts (NGI0)" , stable@vger.kernel.org X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=3731; i=matttbe@kernel.org; h=from:subject:message-id; bh=0qNYQ3jMQIEkmU+vOfYLEB/lSkVygBbnIQV+tu4DGjk=; b=owGbwMvMwCVWo/Th0Gd3rumMp9WSGDJl5NzTNM6uaZ/Vt0Zbx1P1dvdEtwlhF9/l3rde3JJQN 78g7MbJjlIWBjEuBlkxRRbptsj8mc+reEu8/Cxg5rAygQxh4OIUgInk/2dkOFenIJO1a27z2eop NcXaurpXl79UTlZfyrb6mOQXDp4FlxgZDnR3Tsn5c/DX9/R/13a9+sBmeshtw//8rgshOS+qPRZ bsQIA X-Developer-Key: i=matttbe@kernel.org; a=openpgp; fpr=E8CB85F76877057A6E27F77AF6B7824F4269A073 From: Paolo Abeni The rcv window is shared among all the subflows. Currently, MPTCP sync the TCP-level rcv window with the MPTCP one at tcp_transmit_skb() time. The above means that incoming data may sporadically observe outdated TCP-level rcv window and being wrongly dropped by TCP. Address the issue checking for the edge condition before queuing the data at TCP level, and eventually syncing the rcv window as needed. Note that the issue is actually present from the very first MPTCP implementation, but backports older than the blamed commit below will range from impossible to useless. Before: $ nstat -n; sleep 1; nstat -z TcpExtBeyondWindow TcpExtBeyondWindow 14 0.0 After: $ nstat -n; sleep 1; nstat -z TcpExtBeyondWindow TcpExtBeyondWindow 0 0.0 Fixes: fa3fe2b15031 ("mptcp: track window announced to peer") Cc: stable@vger.kernel.org Signed-off-by: Paolo Abeni Reviewed-by: Matthieu Baerts (NGI0) Signed-off-by: Matthieu Baerts (NGI0) --- net/mptcp/options.c | 31 +++++++++++++++++++++++++++++++ net/mptcp/protocol.h | 1 + 2 files changed, 32 insertions(+) diff --git a/net/mptcp/options.c b/net/mptcp/options.c index 8a63bd00807d..f24ae7d40e88 100644 --- a/net/mptcp/options.c +++ b/net/mptcp/options.c @@ -1044,6 +1044,31 @@ static void __mptcp_snd_una_update(struct mptcp_sock= *msk, u64 new_snd_una) WRITE_ONCE(msk->snd_una, new_snd_una); } =20 +static void rwin_update(struct mptcp_sock *msk, struct sock *ssk, + struct sk_buff *skb) +{ + struct mptcp_subflow_context *subflow =3D mptcp_subflow_ctx(ssk); + struct tcp_sock *tp =3D tcp_sk(ssk); + u64 mptcp_rcv_wnd; + + /* Avoid touching extra cachelines if TCP is going to accept this + * skb without filling the TCP-level window even with a possibly + * outdated mptcp-level rwin. + */ + if (!skb->len || skb->len < tcp_receive_window(tp)) + return; + + mptcp_rcv_wnd =3D atomic64_read(&msk->rcv_wnd_sent); + if (!after64(mptcp_rcv_wnd, subflow->rcv_wnd_sent)) + return; + + /* Some other subflow grew the mptcp-level rwin since rcv_wup, + * resync. + */ + tp->rcv_wnd +=3D mptcp_rcv_wnd - subflow->rcv_wnd_sent; + subflow->rcv_wnd_sent =3D mptcp_rcv_wnd; +} + static void ack_update_msk(struct mptcp_sock *msk, struct sock *ssk, struct mptcp_options_received *mp_opt) @@ -1211,6 +1236,7 @@ bool mptcp_incoming_options(struct sock *sk, struct s= k_buff *skb) */ if (mp_opt.use_ack) ack_update_msk(msk, sk, &mp_opt); + rwin_update(msk, sk, skb); =20 /* Zero-data-length packets are dropped by the caller and not * propagated to the MPTCP layer, so the skb extension does not @@ -1297,6 +1323,10 @@ static void mptcp_set_rwin(struct tcp_sock *tp, stru= ct tcphdr *th) =20 if (rcv_wnd_new !=3D rcv_wnd_old) { raise_win: + /* The msk-level rcv wnd is after the tcp level one, + * sync the latter. + */ + rcv_wnd_new =3D rcv_wnd_old; win =3D rcv_wnd_old - ack_seq; tp->rcv_wnd =3D min_t(u64, win, U32_MAX); new_win =3D tp->rcv_wnd; @@ -1320,6 +1350,7 @@ static void mptcp_set_rwin(struct tcp_sock *tp, struc= t tcphdr *th) =20 update_wspace: WRITE_ONCE(msk->old_wspace, tp->rcv_wnd); + subflow->rcv_wnd_sent =3D rcv_wnd_new; } =20 static void mptcp_track_rwin(struct tcp_sock *tp) diff --git a/net/mptcp/protocol.h b/net/mptcp/protocol.h index 379a88e14e8d..5575ef64ea31 100644 --- a/net/mptcp/protocol.h +++ b/net/mptcp/protocol.h @@ -509,6 +509,7 @@ struct mptcp_subflow_context { u64 remote_key; u64 idsn; u64 map_seq; + u64 rcv_wnd_sent; u32 snd_isn; u32 token; u32 rel_write_seq; --=20 2.51.0 From nobody Thu Nov 27 12:35:51 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 74AF530274A; Tue, 18 Nov 2025 07:21:03 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763450463; cv=none; b=aNWGwKnOwYTzEL6nSQzC5gu1vq1RQKxIxnTlvPO9X55YG/IUhyrSqfJZEbGPIhXOY/eMqT6VQv7WP+nXsD5ZsPVgmIdqhECwy9HEx3U3FZpr9sHQ8dmN2R8rOkwPMuzW7Sdfghhi3qWtR6Z60r318UrSRYZoLff0M9Jgv9chtBI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763450463; c=relaxed/simple; bh=TTwSQEIDwEoHL4jY8JupSEs0PP+3fZtDHPv4hnu2HjA=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=QRwi+kl3b1V0TU7qrfCoBgUwuXxEFSHxKMIlByXVy83xrwXeGnGxhyiXs1eGkz6tbq8FhfYzSd59ClRYAbjUPUZtbWdM7qRr0aAJynfzGwTpDS2bn4HL6gd0eH6kxiEqijTeBXX+HfULwyhSSN0ZyviMYxgoo+281jMRCcXQ1RA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=Eg9hbVjQ; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="Eg9hbVjQ" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 762D5C116D0; Tue, 18 Nov 2025 07:21:00 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1763450463; bh=TTwSQEIDwEoHL4jY8JupSEs0PP+3fZtDHPv4hnu2HjA=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=Eg9hbVjQenMXpKZrvpvpDc5DTAYszo1bfuqtad3UEeXMZbjFpkfY9JwBqysI4GFID 4kXPHb6eI6o8Q6s6nzmjIgmr81dJ4aYPw1vyi39XEeyqubn0Z76i/gDA/2bKuedffj iorPIjD1kXAt0KXZ23mVaI16wRSj8VhMJA10vAV1SMKQ97FrDY8qAPx4b3QQb83osc dFO9LEEUbuXBCzZmNag6T+5XX/U2RJ3sIUdZ0PZCW4Qa7vt0y+gz+8ZU0RdjUZZnzI 0UT5KRVWFloyMGFain3teRKGaCUoCvAsAAaCDqDB0OMHyxyVHqMu6sIyKwGbfQApEO FD3POZ7GU0o1A== From: "Matthieu Baerts (NGI0)" Date: Tue, 18 Nov 2025 08:20:21 +0100 Subject: [PATCH net 03/11] mptcp: fix premature close in case of fallback Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20251118-net-mptcp-misc-fixes-6-18-rc6-v1-3-806d3781c95f@kernel.org> References: <20251118-net-mptcp-misc-fixes-6-18-rc6-v1-0-806d3781c95f@kernel.org> In-Reply-To: <20251118-net-mptcp-misc-fixes-6-18-rc6-v1-0-806d3781c95f@kernel.org> To: Mat Martineau , Geliang Tang , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman , Shuah Khan , Florian Westphal Cc: netdev@vger.kernel.org, mptcp@lists.linux.dev, linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, "Matthieu Baerts (NGI0)" , stable@vger.kernel.org X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=2156; i=matttbe@kernel.org; h=from:subject:message-id; bh=4GRqC3IIPU36fC0F6tguAlcMchdbeJR0QnPwZcYgxHM=; b=owGbwMvMwCVWo/Th0Gd3rumMp9WSGDJl5Dz+/jy5PmJt/iwerZ2pXbG/bQr4ozLtZVUuNdvJP lF+d6K2o5SFQYyLQVZMkUW6LTJ/5vMq3hIvPwuYOaxMIEMYuDgFYCLqmYwMJ3sCzdYwsxUcP2le luLuFKSRbD1Dj+WPV3l5QUDT3QtbGRn+Hck/4dK/ZsqHOarr37xLvqLJ9lHIOPIDF6ulwumM1/w cAA== X-Developer-Key: i=matttbe@kernel.org; a=openpgp; fpr=E8CB85F76877057A6E27F77AF6B7824F4269A073 From: Paolo Abeni I'm observing very frequent self-tests failures in case of fallback when running on a CONFIG_PREEMPT kernel. The root cause is that subflow_sched_work_if_closed() closes any subflow as soon as it is half-closed and has no incoming data pending. That works well for regular subflows - MPTCP needs bi-directional connectivity to operate on a given subflow - but for fallback socket is race prone. When TCP peer closes the connection before the MPTCP one, subflow_sched_work_if_closed() will schedule the MPTCP worker to gracefully close the subflow, and shortly after will do another schedule to inject and process a dummy incoming DATA_FIN. On CONFIG_PREEMPT kernel, the MPTCP worker can kick-in and close the fallback subflow before subflow_sched_work_if_closed() is able to create the dummy DATA_FIN, unexpectedly interrupting the transfer. Address the issue explicitly avoiding closing fallback subflows on when the peer is only half-closed. Note that, when the subflow is able to create the DATA_FIN before the worker invocation, the worker will change the msk state before trying to close the subflow and will skip the latter operation as the msk will not match anymore the precondition in __mptcp_close_subflow(). Fixes: f09b0ad55a11 ("mptcp: close subflow when receiving TCP+FIN") Cc: stable@vger.kernel.org Signed-off-by: Paolo Abeni Reviewed-by: Matthieu Baerts (NGI0) Signed-off-by: Matthieu Baerts (NGI0) --- net/mptcp/protocol.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/net/mptcp/protocol.c b/net/mptcp/protocol.c index e27e0fe2460f..e30e9043a694 100644 --- a/net/mptcp/protocol.c +++ b/net/mptcp/protocol.c @@ -2563,7 +2563,8 @@ static void __mptcp_close_subflow(struct sock *sk) =20 if (ssk_state !=3D TCP_CLOSE && (ssk_state !=3D TCP_CLOSE_WAIT || - inet_sk_state_load(sk) !=3D TCP_ESTABLISHED)) + inet_sk_state_load(sk) !=3D TCP_ESTABLISHED || + __mptcp_check_fallback(msk))) continue; =20 /* 'subflow_data_ready' will re-sched once rx queue is empty */ --=20 2.51.0 From nobody Thu Nov 27 12:35:51 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 6700E302170; Tue, 18 Nov 2025 07:21:06 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763450466; cv=none; b=tzAs8qnN0MbX4LKpoaDcQ+jN83UimzVWEO3Bb5ukA5nrdi1vWXOWLpvanleBgpwpep2vQ2EzV+wtfYJ8Usb65YAjHjfhWwEwKdKVPD90pl4qFIAAwiOwxYorOAvkNfXjc1ICkonZ2WRkXKtDIJ0hiqBDOYQAdiXdtqdEQVlSQ0s= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763450466; c=relaxed/simple; bh=v2COROPOkb+/QFrOg17qgWtsZSdKHqoGo4X7yamzLJI=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=iG9DCIy/G3oYnoXrQhGwJI3HEmOTx+f5hBP/UxnLuXtgHhQ8vaeoCHG3WE1ky4Gyn+pVRzoGj1YuKNBKhaxfWxSVHxLW35iBpxAHV8mU4xAcRbM0f9UBNy1+IdrsyIpCliIW2s8mloBwgfTczBvx51mFzjVTmHQ9Zr8OsEGaJwA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=oePav5N+; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="oePav5N+" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 6E4E5C4CEF1; Tue, 18 Nov 2025 07:21:03 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1763450466; bh=v2COROPOkb+/QFrOg17qgWtsZSdKHqoGo4X7yamzLJI=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=oePav5N+JLgPNrd3CsgyLmtcsvBEFjgo3JK1bokE0c+np23Fnf0d5BQQxMSRbsdcM 4VhaBTce+tDjrx+gy4HWtUJCeCVOzU4yk9OiiShSFtoRV22gHUzrJCFF/AqQScgR6T h0jqsH+3Kz1uFcKFBPGCYx2w/EFDrtJT7PgXNt7WLq4CgzLWCG6gk527ZB+8PM4A5E Cek4QEdGHIv2aJS77/mCaqtdA3e4Qx+wQ2vMsopO+Lrt3xDwe2SNnybqwEVZHJ2YgY bB1ULWNb9TEKKKadjkJlhNF/0ZENJQubcfgY+AudB3Air/tA9pXDbDdDVkGoLFncj4 kErQA5CTV3bUQ== From: "Matthieu Baerts (NGI0)" Date: Tue, 18 Nov 2025 08:20:22 +0100 Subject: [PATCH net 04/11] mptcp: do not fallback when OoO is present Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20251118-net-mptcp-misc-fixes-6-18-rc6-v1-4-806d3781c95f@kernel.org> References: <20251118-net-mptcp-misc-fixes-6-18-rc6-v1-0-806d3781c95f@kernel.org> In-Reply-To: <20251118-net-mptcp-misc-fixes-6-18-rc6-v1-0-806d3781c95f@kernel.org> To: Mat Martineau , Geliang Tang , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman , Shuah Khan , Florian Westphal Cc: netdev@vger.kernel.org, mptcp@lists.linux.dev, linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, "Matthieu Baerts (NGI0)" , stable@vger.kernel.org X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=1349; i=matttbe@kernel.org; h=from:subject:message-id; bh=LpZLBaaDHvLWZEUfCSaXCRCaThAocUVDulzNHtecP5k=; b=owGbwMvMwCVWo/Th0Gd3rumMp9WSGDJl5DyNlu3KfP00uCjw26zs1zzH7l6t4PrdlZwc97D55 B8nafYXHaUsDGJcDLJiiizSbZH5M59X8ZZ4+VnAzGFlAhnCwMUpABPx92D4wxuYvaIwI0PYbwqj /cn8yR426snHjc5HLlPZV/F91odgE6CK5f6L9v0/rZSmGj0//a1T2AvLN8yC1x2dDhXmL12cxMs GAA== X-Developer-Key: i=matttbe@kernel.org; a=openpgp; fpr=E8CB85F76877057A6E27F77AF6B7824F4269A073 From: Paolo Abeni In case of DSS corruption, the MPTCP protocol tries to avoid the subflow reset if fallback is possible. Such corruptions happen in the receive path; to ensure fallback is possible the stack additionally needs to check for OoO data, otherwise the fallback will break the data stream. Fixes: e32d262c89e2 ("mptcp: handle consistently DSS corruption") Cc: stable@vger.kernel.org Closes: https://github.com/multipath-tcp/mptcp_net-next/issues/598 Signed-off-by: Paolo Abeni Reviewed-by: Matthieu Baerts (NGI0) Signed-off-by: Matthieu Baerts (NGI0) --- net/mptcp/protocol.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/net/mptcp/protocol.c b/net/mptcp/protocol.c index e30e9043a694..6f0e8f670d83 100644 --- a/net/mptcp/protocol.c +++ b/net/mptcp/protocol.c @@ -76,6 +76,13 @@ bool __mptcp_try_fallback(struct mptcp_sock *msk, int fb= _mib) if (__mptcp_check_fallback(msk)) return true; =20 + /* The caller possibly is not holding the msk socket lock, but + * in the fallback case only the current subflow is touching + * the OoO queue. + */ + if (!RB_EMPTY_ROOT(&msk->out_of_order_queue)) + return false; + spin_lock_bh(&msk->fallback_lock); if (!msk->allow_infinite_fallback) { spin_unlock_bh(&msk->fallback_lock); --=20 2.51.0 From nobody Thu Nov 27 12:35:51 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 51E953054FB; Tue, 18 Nov 2025 07:21:09 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763450469; cv=none; b=IizgaAr4GbJ5L6MYtJG1Pc0fwVbqx0CKintB+dY48+Akciww9cQdHygHsUzCkHRsmwDEE1/1CTENrmKSiNzV8kTu3+kwJCZ/PweRD9TeUnuvW5lDdYZqriz/Zb83KwfoRJzWm1lgoUChJaguMZlEpNjxcQs4PIXWbEjeDXF96ik= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763450469; c=relaxed/simple; bh=0a6/8rnHNn57RmGXD2EZpUaGZXFBqyj0ObQOsLA7f54=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=tuvdwrVpjuVHbrZlqPLaAiVFJNVEwXICA6KE33/ebvdPP8qhxmQ3okxUCyv3TLAj+7tXX4XHTPCcgzKtBSd8kre3OddXbmSe6sz9PR7d4AgSyyPrQ4opmKlOzzREjFgPocmvK2r3fxzjRWvHcZf+Hg5J0swlEkZFWos35vMI7xU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=fWYmSAy4; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="fWYmSAy4" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 6217CC4CEFB; Tue, 18 Nov 2025 07:21:06 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1763450468; bh=0a6/8rnHNn57RmGXD2EZpUaGZXFBqyj0ObQOsLA7f54=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=fWYmSAy4RoNtTS5JehgJO224e7WNUWBVj5G7gvsa7ODcqF0sSJ3n8a/D/DTP8qFeb xZctFsGqSNtTXwIyLw8kc2YxqFxObIHXotx+1ZQO6wuwYBlFBtUfE1KHEfR1FnnSof dMv2iAX68fE/jKlQD6EA0fBPbDN0/Kf1MYFTUgRSZK20HtFCSOmA54Ftd59vjs13nm LFrgNZ0J/zWQc/sFvdBuNViTnmeX52U2Gj0UkicJZGKc/JyduLc2N7nlIl5WWsmmPg 9zI+GyhtnWNxrbDeNwV+llJFHnGPA0W/NK3EINn5eUHGZl3kQSUSzghGO2aI6aNsKi V77AZxyrw70gw== From: "Matthieu Baerts (NGI0)" Date: Tue, 18 Nov 2025 08:20:23 +0100 Subject: [PATCH net 05/11] mptcp: decouple mptcp fastclose from tcp close Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20251118-net-mptcp-misc-fixes-6-18-rc6-v1-5-806d3781c95f@kernel.org> References: <20251118-net-mptcp-misc-fixes-6-18-rc6-v1-0-806d3781c95f@kernel.org> In-Reply-To: <20251118-net-mptcp-misc-fixes-6-18-rc6-v1-0-806d3781c95f@kernel.org> To: Mat Martineau , Geliang Tang , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman , Shuah Khan , Florian Westphal Cc: netdev@vger.kernel.org, mptcp@lists.linux.dev, linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, "Matthieu Baerts (NGI0)" , stable@vger.kernel.org X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=3431; i=matttbe@kernel.org; h=from:subject:message-id; bh=Unlz0Bz9w0VHPBv08/cN2Wx5a4HVMduuZjoVpOrpiPM=; b=owGbwMvMwCVWo/Th0Gd3rumMp9WSGDJl5Lzvbbr4z+Z39MvTh+c6bKgKE2dJ3VLWWPtkrck1+ beZeRP1O0pZGMS4GGTFFFmk2yLzZz6v4i3x8rOAmcPKBDKEgYtTACay7zAjw8PCQ/teJThET1Yu FT2a6bnQvuO6227Xuq4C89wpDSdelTL8z5rB3fhx7ovW3SKPX2Vq+34SihL/+TOiR0rs4c2b69t W8wAA X-Developer-Key: i=matttbe@kernel.org; a=openpgp; fpr=E8CB85F76877057A6E27F77AF6B7824F4269A073 From: Paolo Abeni With the current fastclose implementation, the mptcp_do_fastclose() helper is in charge of two distinct actions: send the fastclose reset and cleanup the subflows. Formally decouple the two steps, ensuring that mptcp explicitly closes all the subflows after the mentioned helper. This will make the upcoming fix simpler, and allows dropping the 2nd argument from mptcp_destroy_common(). The Fixes tag is then the same as in the next commit to help with the backports. Fixes: d21f83485518 ("mptcp: use fastclose on more edge scenarios") Cc: stable@vger.kernel.org Signed-off-by: Paolo Abeni Reviewed-by: Geliang Tang Reviewed-by: Matthieu Baerts (NGI0) Signed-off-by: Matthieu Baerts (NGI0) --- net/mptcp/protocol.c | 13 +++++++++---- net/mptcp/protocol.h | 2 +- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/net/mptcp/protocol.c b/net/mptcp/protocol.c index 6f0e8f670d83..c59246c1fde6 100644 --- a/net/mptcp/protocol.c +++ b/net/mptcp/protocol.c @@ -2808,7 +2808,11 @@ static void mptcp_worker(struct work_struct *work) __mptcp_close_subflow(sk); =20 if (mptcp_close_tout_expired(sk)) { + struct mptcp_subflow_context *subflow, *tmp; + mptcp_do_fastclose(sk); + mptcp_for_each_subflow_safe(msk, subflow, tmp) + __mptcp_close_ssk(sk, subflow->tcp_sock, subflow, 0); mptcp_close_wake_up(sk); } =20 @@ -3233,7 +3237,8 @@ static int mptcp_disconnect(struct sock *sk, int flag= s) /* msk->subflow is still intact, the following will not free the first * subflow */ - mptcp_destroy_common(msk, MPTCP_CF_FASTCLOSE); + mptcp_do_fastclose(sk); + mptcp_destroy_common(msk); =20 /* The first subflow is already in TCP_CLOSE status, the following * can't overlap with a fallback anymore @@ -3412,7 +3417,7 @@ void mptcp_rcv_space_init(struct mptcp_sock *msk, con= st struct sock *ssk) msk->rcvq_space.space =3D TCP_INIT_CWND * TCP_MSS_DEFAULT; } =20 -void mptcp_destroy_common(struct mptcp_sock *msk, unsigned int flags) +void mptcp_destroy_common(struct mptcp_sock *msk) { struct mptcp_subflow_context *subflow, *tmp; struct sock *sk =3D (struct sock *)msk; @@ -3421,7 +3426,7 @@ void mptcp_destroy_common(struct mptcp_sock *msk, uns= igned int flags) =20 /* join list will be eventually flushed (with rst) at sock lock release t= ime */ mptcp_for_each_subflow_safe(msk, subflow, tmp) - __mptcp_close_ssk(sk, mptcp_subflow_tcp_sock(subflow), subflow, flags); + __mptcp_close_ssk(sk, mptcp_subflow_tcp_sock(subflow), subflow, 0); =20 __skb_queue_purge(&sk->sk_receive_queue); skb_rbtree_purge(&msk->out_of_order_queue); @@ -3439,7 +3444,7 @@ static void mptcp_destroy(struct sock *sk) =20 /* allow the following to close even the initial subflow */ msk->free_first =3D 1; - mptcp_destroy_common(msk, 0); + mptcp_destroy_common(msk); sk_sockets_allocated_dec(sk); } =20 diff --git a/net/mptcp/protocol.h b/net/mptcp/protocol.h index 5575ef64ea31..6ca97096607c 100644 --- a/net/mptcp/protocol.h +++ b/net/mptcp/protocol.h @@ -977,7 +977,7 @@ static inline void mptcp_propagate_sndbuf(struct sock *= sk, struct sock *ssk) local_bh_enable(); } =20 -void mptcp_destroy_common(struct mptcp_sock *msk, unsigned int flags); +void mptcp_destroy_common(struct mptcp_sock *msk); =20 #define MPTCP_TOKEN_MAX_RETRIES 4 =20 --=20 2.51.0 From nobody Thu Nov 27 12:35:51 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 53DDB3064A7; Tue, 18 Nov 2025 07:21:11 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763450472; cv=none; b=Nz4Wazl5Q7x7ZLKZJYcqKKUvdfOyASn+hRsBKEcrowuTz2ywG2r5eY45s4sKClmt2KzfCcAXOhZViGANKYwKEwYmCzhDVrkbqstwtpliKQh3MmWIoskHSD85t47FUFgLS59BN9uc+Tfq/KSwQZGwWZJ8y1cNSnBTHRhnVouKvn0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763450472; c=relaxed/simple; bh=rN00PkD+rofdzTv8Iit9dTRPmFxKtGBef6EoZRFIrd8=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Z5NFAE5LRInFhc8gMXY6+tcYOl/kqL4IslUjGT8dP9ZIxMLfeovgqL3NRdDXGIpsLhJrGb4ZmNS4W2f/Rr8i14SMnLn3AWsAalbpH+DSl/3zjDBWw0TApE9h+3QdtHTMnnOJq2i4n2ZRp05pPffVfq2I4Gbp4wJzcQCAPC78ZmI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=V+/BqPOB; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="V+/BqPOB" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 53371C4CEF5; Tue, 18 Nov 2025 07:21:09 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1763450471; bh=rN00PkD+rofdzTv8Iit9dTRPmFxKtGBef6EoZRFIrd8=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=V+/BqPOBPN4z3AN9Qe6yM45N/xqBSvjYf5Nv3kwSRQFerThqUY6Egg1Dg3cdx1RSc d9C1GvZ4NZSdxAdJf6gTnMANISS8OOAZbWlDB337wRbhRGx6QY7szxukcdNloee98t /OoTmRGeE1iJCPaPY8RsS0OFUcU1Iu7UVXJDEjAvqKA0AumYHEQ6lxeoxQArn6Sxvj 037dLKGPXB+TPDYGyCdpCg4vnnQ0WLM29npJ5NRS/2LloXbSXfhWYRliquADXd11Qq e3DY9wpUPsTtRRlJ6eNe48t6zzrHbqAwkC69mwaGp1hXVz55n9a26CzZ5lZzly6xbS yVkv71SWU9mCQ== From: "Matthieu Baerts (NGI0)" Date: Tue, 18 Nov 2025 08:20:24 +0100 Subject: [PATCH net 06/11] mptcp: fix duplicate reset on fastclose Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20251118-net-mptcp-misc-fixes-6-18-rc6-v1-6-806d3781c95f@kernel.org> References: <20251118-net-mptcp-misc-fixes-6-18-rc6-v1-0-806d3781c95f@kernel.org> In-Reply-To: <20251118-net-mptcp-misc-fixes-6-18-rc6-v1-0-806d3781c95f@kernel.org> To: Mat Martineau , Geliang Tang , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman , Shuah Khan , Florian Westphal Cc: netdev@vger.kernel.org, mptcp@lists.linux.dev, linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, "Matthieu Baerts (NGI0)" , stable@vger.kernel.org X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=3606; i=matttbe@kernel.org; h=from:subject:message-id; bh=LYEAjFlwBNcLPv3BhiEyg2jvdxLL/0HMlIDSK6hafA4=; b=owGbwMvMwCVWo/Th0Gd3rumMp9WSGDJl5HyKTn8tiF9WsZs36gT/BoXVO5hvWik+uFK40ecUc 7j+9jaPjlIWBjEuBlkxRRbptsj8mc+reEu8/Cxg5rAygQxh4OIUgIkoRzH8s9YPzTot4sQ+mz/s lkiv9OdNalccYy09Ll2c9f3ZfMF/Hxj+pz07rr9XInXzhtDjkUzFrrGLZQveTtBojQ2V1mJ9yVH ABgA= X-Developer-Key: i=matttbe@kernel.org; a=openpgp; fpr=E8CB85F76877057A6E27F77AF6B7824F4269A073 From: Paolo Abeni The CI reports sporadic failures of the fastclose self-tests. The root cause is a duplicate reset, not carrying the relevant MPTCP option. In the failing scenario the bad reset is received by the peer before the fastclose one, preventing the reception of the latter. Indeed there is window of opportunity at fastclose time for the following race: mptcp_do_fastclose __mptcp_close_ssk __tcp_close() tcp_set_state() [1] tcp_send_active_reset() [2] After [1] the stack will send reset to in-flight data reaching the now closed port. Such reset may race with [2]. Address the issue explicitly sending a single reset on fastclose before explicitly moving the subflow to close status. Fixes: d21f83485518 ("mptcp: use fastclose on more edge scenarios") Cc: stable@vger.kernel.org Closes: https://github.com/multipath-tcp/mptcp_net-next/issues/596 Signed-off-by: Paolo Abeni Reviewed-by: Geliang Tang Reviewed-by: Matthieu Baerts (NGI0) Signed-off-by: Matthieu Baerts (NGI0) --- net/mptcp/protocol.c | 36 +++++++++++++++++++++++------------- 1 file changed, 23 insertions(+), 13 deletions(-) diff --git a/net/mptcp/protocol.c b/net/mptcp/protocol.c index c59246c1fde6..a70267a74e3c 100644 --- a/net/mptcp/protocol.c +++ b/net/mptcp/protocol.c @@ -2409,7 +2409,6 @@ bool __mptcp_retransmit_pending_data(struct sock *sk) =20 /* flags for __mptcp_close_ssk() */ #define MPTCP_CF_PUSH BIT(1) -#define MPTCP_CF_FASTCLOSE BIT(2) =20 /* be sure to send a reset only if the caller asked for it, also * clean completely the subflow status when the subflow reaches @@ -2420,7 +2419,7 @@ static void __mptcp_subflow_disconnect(struct sock *s= sk, unsigned int flags) { if (((1 << ssk->sk_state) & (TCPF_CLOSE | TCPF_LISTEN)) || - (flags & MPTCP_CF_FASTCLOSE)) { + subflow->send_fastclose) { /* The MPTCP code never wait on the subflow sockets, TCP-level * disconnect should never fail */ @@ -2467,14 +2466,8 @@ static void __mptcp_close_ssk(struct sock *sk, struc= t sock *ssk, =20 lock_sock_nested(ssk, SINGLE_DEPTH_NESTING); =20 - if ((flags & MPTCP_CF_FASTCLOSE) && !__mptcp_check_fallback(msk)) { - /* be sure to force the tcp_close path - * to generate the egress reset - */ - ssk->sk_lingertime =3D 0; - sock_set_flag(ssk, SOCK_LINGER); - subflow->send_fastclose =3D 1; - } + if (subflow->send_fastclose && ssk->sk_state !=3D TCP_CLOSE) + tcp_set_state(ssk, TCP_CLOSE); =20 need_push =3D (flags & MPTCP_CF_PUSH) && __mptcp_retransmit_pending_data(= sk); if (!dispose_it) { @@ -2779,9 +2772,26 @@ static void mptcp_do_fastclose(struct sock *sk) struct mptcp_sock *msk =3D mptcp_sk(sk); =20 mptcp_set_state(sk, TCP_CLOSE); - mptcp_for_each_subflow_safe(msk, subflow, tmp) - __mptcp_close_ssk(sk, mptcp_subflow_tcp_sock(subflow), - subflow, MPTCP_CF_FASTCLOSE); + + /* Explicitly send the fastclose reset as need */ + if (__mptcp_check_fallback(msk)) + return; + + mptcp_for_each_subflow_safe(msk, subflow, tmp) { + struct sock *ssk =3D mptcp_subflow_tcp_sock(subflow); + + lock_sock(ssk); + + /* Some subflow socket states don't allow/need a reset.*/ + if ((1 << ssk->sk_state) & (TCPF_LISTEN | TCPF_CLOSE)) + goto unlock; + + subflow->send_fastclose =3D 1; + tcp_send_active_reset(ssk, ssk->sk_allocation, + SK_RST_REASON_TCP_ABORT_ON_CLOSE); +unlock: + release_sock(ssk); + } } =20 static void mptcp_worker(struct work_struct *work) --=20 2.51.0 From nobody Thu Nov 27 12:35:51 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id E60F9306D5F; Tue, 18 Nov 2025 07:21:14 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763450475; cv=none; b=ra6v1Unu+98RI3oaB9VRTgK+aPsPE0HF/ElqIkHxzvFZ7rr6XOU9c2EAvqk/R9Z+/Jw2aUzmToqk89QZuzio43idi6zzUoeBoneQkpWLBZws4X/N8Y2glx1nK9U9jkwMc6wTgRGDdbIcTzfBu8Wy1J/jzrJaH70TpZK4SmKoe/k= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763450475; c=relaxed/simple; bh=b2a4lL+pfLejH4X+ZHTAkwbOkvwKHQx6oTEDhFcBeTQ=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=i2Yse5HQQUwkbLhPeAl3+CEc6+U9XRP+VfbGkGai1SWOuhTgftmG8SZhPT0PNW1QCAykgbDpBNqtIE/OePUp+D9wYkDPR/6ySFz2UPlDLy/s1lvjPMKyl/9DQGWjid9AdQJjUELiLHXGCAOG/GHtdnH89CQ2oIZ8frZbcBQWnos= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=AvEeSSAA; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="AvEeSSAA" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 43C71C4CEFB; Tue, 18 Nov 2025 07:21:12 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1763450474; bh=b2a4lL+pfLejH4X+ZHTAkwbOkvwKHQx6oTEDhFcBeTQ=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=AvEeSSAAbyb9CqA5L4wRZ1GgZa4oPaczwtnK04pDcjkuN5WZFGfviC90dM/LNIHqn aDzz1FpimQ+1LilYsDtwLgZEDS2IYEuw0iriFZVgfGgU3DRVk/V7SEn3tBwX4e3htj B9ctq9WEDEcBfhoXcjjGp7TxxQK6mfDBdVE1hLY1aqsrCRJPfOqq+z2L7qD1xWN+VN e9jB33ggCbOwlUWmxWW9ThN8O53ik4GzaTYv1Wp8lKNmflOefGbxon4jYtXOvkEtC9 1hzC7ZL1AUj2povlLcJXphDha10AQTNoDjsSqirgzatpZlENT3qfIUvnFdfGMRDi2C tlvHFlXiTuD2Q== From: "Matthieu Baerts (NGI0)" Date: Tue, 18 Nov 2025 08:20:25 +0100 Subject: [PATCH net 07/11] selftests: mptcp: join: fastclose: remove flaky marks Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20251118-net-mptcp-misc-fixes-6-18-rc6-v1-7-806d3781c95f@kernel.org> References: <20251118-net-mptcp-misc-fixes-6-18-rc6-v1-0-806d3781c95f@kernel.org> In-Reply-To: <20251118-net-mptcp-misc-fixes-6-18-rc6-v1-0-806d3781c95f@kernel.org> To: Mat Martineau , Geliang Tang , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman , Shuah Khan , Florian Westphal Cc: netdev@vger.kernel.org, mptcp@lists.linux.dev, linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, "Matthieu Baerts (NGI0)" X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=1276; i=matttbe@kernel.org; h=from:subject:message-id; bh=b2a4lL+pfLejH4X+ZHTAkwbOkvwKHQx6oTEDhFcBeTQ=; b=owGbwMvMwCVWo/Th0Gd3rumMp9WSGDJl5HxfLLp9uN3cf0nSMfbUWX96VtbcOuL7Uy50xnMXs 4Qt8UWJHaUsDGJcDLJiiizSbZH5M59X8ZZ4+VnAzGFlAhnCwMUpABO528jwz34Wlwe/9LRvZ8+s lYw+tbfipYJSwFaLuAtxPeEilyT02BgZlvEcy+AT/bnmV8yPL8GVrMxmanHPUlfEPwn+OuOPk7o lEwA= X-Developer-Key: i=matttbe@kernel.org; a=openpgp; fpr=E8CB85F76877057A6E27F77AF6B7824F4269A073 After recent fixes like the parent commit, and "selftests: mptcp: connect: trunc: read all recv data", the two fastclose subtests no longer look flaky any more. It then feels fine to remove these flaky marks, to no longer ignore these subtests in case of errors. Reviewed-by: Geliang Tang Signed-off-by: Matthieu Baerts (NGI0) --- tools/testing/selftests/net/mptcp/mptcp_join.sh | 2 -- 1 file changed, 2 deletions(-) diff --git a/tools/testing/selftests/net/mptcp/mptcp_join.sh b/tools/testin= g/selftests/net/mptcp/mptcp_join.sh index 41503c241989..303abbca59fc 100755 --- a/tools/testing/selftests/net/mptcp/mptcp_join.sh +++ b/tools/testing/selftests/net/mptcp/mptcp_join.sh @@ -3500,7 +3500,6 @@ fullmesh_tests() fastclose_tests() { if reset_check_counter "fastclose test" "MPTcpExtMPFastcloseTx"; then - MPTCP_LIB_SUBTEST_FLAKY=3D1 test_linkfail=3D1024 fastclose=3Dclient \ run_tests $ns1 $ns2 10.0.1.1 chk_join_nr 0 0 0 @@ -3509,7 +3508,6 @@ fastclose_tests() fi =20 if reset_check_counter "fastclose server test" "MPTcpExtMPFastcloseRx"; t= hen - MPTCP_LIB_SUBTEST_FLAKY=3D1 test_linkfail=3D1024 fastclose=3Dserver \ run_tests $ns1 $ns2 10.0.1.1 join_rst_nr=3D1 \ --=20 2.51.0 From nobody Thu Nov 27 12:35:51 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 00CA63081B9; Tue, 18 Nov 2025 07:21:17 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763450478; cv=none; b=F7Uyqwm9RW7jxTLH6e2MUMT2SXSgzQSPtcNgATHouwFO6sGxESqGaueevMLwNYPx4A4MjExZCRp+kNaQjfV37q3Xc3J6E5NtAKIPuwYmnGePZ4SwRVGAylOPxaQBx4oSaKalCKD8Bc5vA2gbp/t83/F4jX6L+IbqwiSYolPy8/E= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763450478; c=relaxed/simple; bh=PsNkfnJCyxo7NMXegdzKziVjOZ7caxE9x0t2PWtbAE8=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=SYeIN6g1eTA3ztAtGBdRB/z2uuOy6wXnPdoykeqhRH5IAEHOW20MpszSJol4qJmHq3A3R1+dQ4P58V7j3ksDLeBMViv0WdWbUpXVF+gp49mPYya3DxEXjdR5R0E1gZAzCw7LGUpIPzRzrG6JVB0WuefNPPf/4REt8g8tayDL+y0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=h9fnYbQi; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="h9fnYbQi" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 11552C4CEF5; Tue, 18 Nov 2025 07:21:14 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1763450477; bh=PsNkfnJCyxo7NMXegdzKziVjOZ7caxE9x0t2PWtbAE8=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=h9fnYbQiTrqXQbz5e0DmwT2QMAH62kJNzrPgVvUHlrGMD9hbSoEj6z9MmemiG/NrL DNafV212bhFiPv4EUUVH+WE64Q8p7jYf9IBvCc9ZX2Fzj0K1USfse2lKkwsgWP423l vLsWrsy9JkCy27sl6ddMrYdyhwsLhd9JbPDMcKMLsRFKz4j0EC67QQyqNj34U0N3Dy HSSXUcec8aRVvtYwhQGvtgkWgNXjTxJSRTpLW2V1nrf497QgBff1eRCXLUFO+fQire DUNaKNI2zMG+N2fAGdi2McwFIY3p6ILB+B2ZdqPWiWXUblNKzZvIBEVjPWIiZ15Egw 1mhui04l+7MzQ== From: "Matthieu Baerts (NGI0)" Date: Tue, 18 Nov 2025 08:20:26 +0100 Subject: [PATCH net 08/11] selftests: mptcp: join: endpoints: longer timeout Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20251118-net-mptcp-misc-fixes-6-18-rc6-v1-8-806d3781c95f@kernel.org> References: <20251118-net-mptcp-misc-fixes-6-18-rc6-v1-0-806d3781c95f@kernel.org> In-Reply-To: <20251118-net-mptcp-misc-fixes-6-18-rc6-v1-0-806d3781c95f@kernel.org> To: Mat Martineau , Geliang Tang , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman , Shuah Khan , Florian Westphal Cc: netdev@vger.kernel.org, mptcp@lists.linux.dev, linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, "Matthieu Baerts (NGI0)" , stable@vger.kernel.org X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=2833; i=matttbe@kernel.org; h=from:subject:message-id; bh=PsNkfnJCyxo7NMXegdzKziVjOZ7caxE9x0t2PWtbAE8=; b=owGbwMvMwCVWo/Th0Gd3rumMp9WSGDJl5Pzc1Zc7qFcsml75dsuOLS7LnfrCVwSvenL1QPc2p RSpUpu4jlIWBjEuBlkxRRbptsj8mc+reEu8/Cxg5rAygQxh4OIUgIk8fMPIsFX0drOw35wpkXsM Yw6F9bktWKHz1biGZ7d3gd9r63U6mgz//XP2nyhc5yba/P7/zzm6/kXX193J7419178lpcZ5X9p efgA= X-Developer-Key: i=matttbe@kernel.org; a=openpgp; fpr=E8CB85F76877057A6E27F77AF6B7824F4269A073 In rare cases, when the test environment is very slow, some endpoints tests can fail because some expected events have not been seen. Because the tests are expecting a long on-going connection, and they are not waiting for the end of the transfer, it is fine to have a longer timeout, and even go over the default one. This connection will be killed at the end, after the verifications: increasing the timeout doesn't change anything, apart from avoiding it to end before the end of the verifications. To play it safe, all endpoints tests not waiting for the end of the transfer are now having a longer timeout: 2 minutes. The Fixes commit was making the connection longer, but still, the default timeout would have stopped it after 1 minute, which might not be enough in very slow environments. Fixes: 6457595db987 ("selftests: mptcp: join: endpoints: longer transfer") Cc: stable@vger.kernel.org Signed-off-by: Matthieu Baerts (NGI0) Reviewed-by: Geliang Tang --- tools/testing/selftests/net/mptcp/mptcp_join.sh | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tools/testing/selftests/net/mptcp/mptcp_join.sh b/tools/testin= g/selftests/net/mptcp/mptcp_join.sh index 303abbca59fc..93d38ded5e4e 100755 --- a/tools/testing/selftests/net/mptcp/mptcp_join.sh +++ b/tools/testing/selftests/net/mptcp/mptcp_join.sh @@ -3941,7 +3941,7 @@ endpoint_tests() pm_nl_set_limits $ns1 2 2 pm_nl_set_limits $ns2 2 2 pm_nl_add_endpoint $ns1 10.0.2.1 flags signal - { test_linkfail=3D128 speed=3Dslow \ + { timeout_test=3D120 test_linkfail=3D128 speed=3Dslow \ run_tests $ns1 $ns2 10.0.1.1 & } 2>/dev/null local tests_pid=3D$! =20 @@ -3968,7 +3968,7 @@ endpoint_tests() pm_nl_set_limits $ns2 0 3 pm_nl_add_endpoint $ns2 10.0.1.2 id 1 dev ns2eth1 flags subflow pm_nl_add_endpoint $ns2 10.0.2.2 id 2 dev ns2eth2 flags subflow - { test_linkfail=3D128 speed=3D5 \ + { timeout_test=3D120 test_linkfail=3D128 speed=3D5 \ run_tests $ns1 $ns2 10.0.1.1 & } 2>/dev/null local tests_pid=3D$! =20 @@ -4046,7 +4046,7 @@ endpoint_tests() # broadcast IP: no packet for this address will be received on ns1 pm_nl_add_endpoint $ns1 224.0.0.1 id 2 flags signal pm_nl_add_endpoint $ns1 10.0.1.1 id 42 flags signal - { test_linkfail=3D128 speed=3D5 \ + { timeout_test=3D120 test_linkfail=3D128 speed=3D5 \ run_tests $ns1 $ns2 10.0.1.1 & } 2>/dev/null local tests_pid=3D$! =20 @@ -4119,7 +4119,7 @@ endpoint_tests() # broadcast IP: no packet for this address will be received on ns1 pm_nl_add_endpoint $ns1 224.0.0.1 id 2 flags signal pm_nl_add_endpoint $ns2 10.0.3.2 id 3 flags subflow - { test_linkfail=3D128 speed=3D20 \ + { timeout_test=3D120 test_linkfail=3D128 speed=3D20 \ run_tests $ns1 $ns2 10.0.1.1 & } 2>/dev/null local tests_pid=3D$! =20 --=20 2.51.0 From nobody Thu Nov 27 12:35:51 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id E97653093A6; Tue, 18 Nov 2025 07:21:20 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763450481; cv=none; b=Un8Bqc+5rQgEfj8sbuGs8ST0teWwn57M5JJEYhD7PKdREFVqiNPyjoQEV0bekvilH8ZZdOLUcfJcwkm6lM+RmZsc/dP3pxvumFtCSLqUElVKghZg1RUcNGV5q56zLZVBVd214MOfoscZqm/TJAq1eAcW6FHxqJfWcbbOTgdNO9Q= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763450481; c=relaxed/simple; bh=bAcKyJTl5+BIraX49wqM5hclDHdO8ieXranCvHNp3SA=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=KN/MoBbbVMJBHY4mHXG9OObCru7wCIq4wx+qmeMzFAVAYnwjc9z79CPZ8FDTc5CB0sMG35vq2nNnne3gSSe4ObZSvgz6wp/YSKYVv2i1mr4N9r6YqRz2OoOrd5QX+HI5SUOwAlr3bx5ouQG+Trid+ahxO78rVwMZbcIEuBZzNkI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=ezP7JTMj; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="ezP7JTMj" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 02023C4CEF1; Tue, 18 Nov 2025 07:21:17 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1763450480; bh=bAcKyJTl5+BIraX49wqM5hclDHdO8ieXranCvHNp3SA=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=ezP7JTMjzQwMr/IH2IZpp987ciP45uMNnKZWGgviQoRRT/9KyqwqPKIndNfPdP2Nj 9QBvLyuKgkA1OIy1lR3nW152XD8XzzobShtI3IIV4cwCNA088dtmlRLi5upqwzYeqT RXso7pr1kk+arYG97SafNdDAGncLW1JsY/DQQKcAkUH4MvZa/eM9C049IbIKphzkQx gSunnVji9veT3wyf670TKHOdj24xCqlpnEaOpMeCRnRvvavxYfrjTzFmb6d8838eGy P/HQ0ACJN6OlIpYJpFwaahDm3xIqvlcIzrsCQw9+zTVOAwPORwN7YDAt6HaPqUyinX J9sBoiNWEuImw== From: "Matthieu Baerts (NGI0)" Date: Tue, 18 Nov 2025 08:20:27 +0100 Subject: [PATCH net 09/11] selftests: mptcp: join: userspace: longer timeout Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20251118-net-mptcp-misc-fixes-6-18-rc6-v1-9-806d3781c95f@kernel.org> References: <20251118-net-mptcp-misc-fixes-6-18-rc6-v1-0-806d3781c95f@kernel.org> In-Reply-To: <20251118-net-mptcp-misc-fixes-6-18-rc6-v1-0-806d3781c95f@kernel.org> To: Mat Martineau , Geliang Tang , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman , Shuah Khan , Florian Westphal Cc: netdev@vger.kernel.org, mptcp@lists.linux.dev, linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, "Matthieu Baerts (NGI0)" , stable@vger.kernel.org X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=3112; i=matttbe@kernel.org; h=from:subject:message-id; bh=bAcKyJTl5+BIraX49wqM5hclDHdO8ieXranCvHNp3SA=; b=owGbwMvMwCVWo/Th0Gd3rumMp9WSGDJl5ALmB2+OnOunwWyr8NXVNXBtz7p1Sx6VlP2YfqmDw +HykZKAjlIWBjEuBlkxRRbptsj8mc+reEu8/Cxg5rAygQxh4OIUgImczGP4wyt69IyysF+G1cWZ Wca3Gr55VT5dXBmjvW5X3pzNzonSMxkZrtwObWEKFpO+t3b75aPJX/LrNC9mTTurL/a8WKxLSi+ XCwA= X-Developer-Key: i=matttbe@kernel.org; a=openpgp; fpr=E8CB85F76877057A6E27F77AF6B7824F4269A073 In rare cases, when the test environment is very slow, some userspace tests can fail because some expected events have not been seen. Because the tests are expecting a long on-going connection, and they are not waiting for the end of the transfer, it is fine to have a longer timeout, and even go over the default one. This connection will be killed at the end, after the verifications: increasing the timeout doesn't change anything, apart from avoiding it to end before the end of the verifications. To play it safe, all userspace tests not waiting for the end of the transfer are now having a longer timeout: 2 minutes. The Fixes commit was making the connection longer, but still, the default timeout would have stopped it after 1 minute, which might not be enough in very slow environments. Fixes: 290493078b96 ("selftests: mptcp: join: userspace: longer transfer") Cc: stable@vger.kernel.org Signed-off-by: Matthieu Baerts (NGI0) --- tools/testing/selftests/net/mptcp/mptcp_join.sh | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/tools/testing/selftests/net/mptcp/mptcp_join.sh b/tools/testin= g/selftests/net/mptcp/mptcp_join.sh index 93d38ded5e4e..74632beae2c6 100755 --- a/tools/testing/selftests/net/mptcp/mptcp_join.sh +++ b/tools/testing/selftests/net/mptcp/mptcp_join.sh @@ -3804,7 +3804,7 @@ userspace_tests() continue_if mptcp_lib_has_file '/proc/sys/net/mptcp/pm_type'; then set_userspace_pm $ns1 pm_nl_set_limits $ns2 2 2 - { test_linkfail=3D128 speed=3D5 \ + { timeout_test=3D120 test_linkfail=3D128 speed=3D5 \ run_tests $ns1 $ns2 10.0.1.1 & } 2>/dev/null local tests_pid=3D$! wait_mpj $ns1 @@ -3837,7 +3837,7 @@ userspace_tests() continue_if mptcp_lib_has_file '/proc/sys/net/mptcp/pm_type'; then set_userspace_pm $ns2 pm_nl_set_limits $ns1 0 1 - { test_linkfail=3D128 speed=3D5 \ + { timeout_test=3D120 test_linkfail=3D128 speed=3D5 \ run_tests $ns1 $ns2 10.0.1.1 & } 2>/dev/null local tests_pid=3D$! wait_mpj $ns2 @@ -3865,7 +3865,7 @@ userspace_tests() continue_if mptcp_lib_has_file '/proc/sys/net/mptcp/pm_type'; then set_userspace_pm $ns2 pm_nl_set_limits $ns1 0 1 - { test_linkfail=3D128 speed=3D5 \ + { timeout_test=3D120 test_linkfail=3D128 speed=3D5 \ run_tests $ns1 $ns2 10.0.1.1 & } 2>/dev/null local tests_pid=3D$! wait_mpj $ns2 @@ -3886,7 +3886,7 @@ userspace_tests() continue_if mptcp_lib_has_file '/proc/sys/net/mptcp/pm_type'; then set_userspace_pm $ns2 pm_nl_set_limits $ns1 0 1 - { test_linkfail=3D128 speed=3D5 \ + { timeout_test=3D120 test_linkfail=3D128 speed=3D5 \ run_tests $ns1 $ns2 10.0.1.1 & } 2>/dev/null local tests_pid=3D$! wait_mpj $ns2 @@ -3910,7 +3910,7 @@ userspace_tests() continue_if mptcp_lib_has_file '/proc/sys/net/mptcp/pm_type'; then set_userspace_pm $ns1 pm_nl_set_limits $ns2 1 1 - { test_linkfail=3D128 speed=3D5 \ + { timeout_test=3D120 test_linkfail=3D128 speed=3D5 \ run_tests $ns1 $ns2 10.0.1.1 & } 2>/dev/null local tests_pid=3D$! wait_mpj $ns1 --=20 2.51.0 From nobody Thu Nov 27 12:35:51 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id BD13B309DAB; Tue, 18 Nov 2025 07:21:23 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763450483; cv=none; b=WCawKIj5qf28CWnVGRR7GeSaGjc/SHFTw2r1UU1+KxvEp8xVjUqK/ywnN/fly352z/dKTX5padOrENgoWTLmar/K/5aKnHixfuzhl2GoSNyvMJFiPiibi4b/or/11WR/aP0qQ7Nvc339S6S0OxCXcioJBAzLGEYyfLHx2sQcfgw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763450483; c=relaxed/simple; bh=/SkZ/1rikGfId+WTzg5hsP0H8Mzs9COHcj4A55ocTio=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=I2p5XM4KgMgSWUhB84Zq7/fy3twuRvWxV+PFJqSa5JxV60zmrs6Vclr4VYg198nzAonvE28ajEMempazfviqzyU3oyEfu0/nyNWD0Yuj53YwJLopsO0hWVOIMwr9GdrOFAKRoodbKPqk/7DkM9RMC8KOE2aHkwu8HT7q1NFwfm8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=ovSupcb0; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="ovSupcb0" Received: by smtp.kernel.org (Postfix) with ESMTPSA id E85B5C116D0; Tue, 18 Nov 2025 07:21:20 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1763450483; bh=/SkZ/1rikGfId+WTzg5hsP0H8Mzs9COHcj4A55ocTio=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=ovSupcb0zLFPEUeYVlWE0TMTFZj5zElpvLgqrAV/mRhJhs4dl+coz/H8UXoXAz4E/ NuugPeVjrtbdd77obP2P/NV+khiEqDFJ1PbajUWvQ5jQjRXR3EB2qTPm3OYItWFHwy fA7OJo8wNWVbUVtP8Agv4pXfSxPSxS/7jsM6KOL4A14g5EIvtXIuCTOMSKLPHt75+P eQXH1YJSxpdqJmmojI60GaQElQ/tWgq/aJEyXxQk+LjWbrhdyVfjYPWM82SiOxjwfD S0nLZJbq24wox/4IX0kKDTPeDXFP1XFlZzpNogJaPEeHNPHcHIiYnLchZlB3baAkM7 nfOR8kOBo93iQ== From: "Matthieu Baerts (NGI0)" Date: Tue, 18 Nov 2025 08:20:28 +0100 Subject: [PATCH net 10/11] mptcp: fix address removal logic in mptcp_pm_nl_rm_addr Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20251118-net-mptcp-misc-fixes-6-18-rc6-v1-10-806d3781c95f@kernel.org> References: <20251118-net-mptcp-misc-fixes-6-18-rc6-v1-0-806d3781c95f@kernel.org> In-Reply-To: <20251118-net-mptcp-misc-fixes-6-18-rc6-v1-0-806d3781c95f@kernel.org> To: Mat Martineau , Geliang Tang , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman , Shuah Khan , Florian Westphal Cc: netdev@vger.kernel.org, mptcp@lists.linux.dev, linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, "Matthieu Baerts (NGI0)" , Gang Yan , stable@vger.kernel.org X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=1144; i=matttbe@kernel.org; h=from:subject:message-id; bh=RZgHhm/YQehCU4ffPYcYWbBUBUzzcOnO6DmzyJ5iJLE=; b=owGbwMvMwCVWo/Th0Gd3rumMp9WSGDJl5AInRjY/kXz6lPvgwuPZHcLy7j8EmVdN9vr1ZJ+NV UPqYUfbjlIWBjEuBlkxRRbptsj8mc+reEu8/Cxg5rAygQxh4OIUgIl4JjH8z/uyue/IR8YPlj9u qP/+fKgwa9kEO70JshnnzJcufJV+/DAjQ/v/jWUCN2K/2Hb2f2coFdjMyLGgoHY2q4OvZe1r0QU lnAA= X-Developer-Key: i=matttbe@kernel.org; a=openpgp; fpr=E8CB85F76877057A6E27F77AF6B7824F4269A073 From: Gang Yan Fix inverted WARN_ON_ONCE condition that prevented normal address removal counter updates. The current code only executes decrement logic when the counter is already 0 (abnormal state), while normal removals (counter > 0) are ignored. Signed-off-by: Gang Yan Fixes: 636113918508 ("mptcp: pm: remove '_nl' from mptcp_pm_nl_rm_addr_rece= ived") Cc: stable@vger.kernel.org Reviewed-by: Matthieu Baerts (NGI0) Signed-off-by: Matthieu Baerts (NGI0) --- net/mptcp/pm_kernel.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/net/mptcp/pm_kernel.c b/net/mptcp/pm_kernel.c index 2ae95476dba3..0a50fd5edc06 100644 --- a/net/mptcp/pm_kernel.c +++ b/net/mptcp/pm_kernel.c @@ -672,7 +672,7 @@ static void mptcp_pm_nl_add_addr_received(struct mptcp_= sock *msk) =20 void mptcp_pm_nl_rm_addr(struct mptcp_sock *msk, u8 rm_id) { - if (rm_id && WARN_ON_ONCE(msk->pm.add_addr_accepted =3D=3D 0)) { + if (rm_id && !WARN_ON_ONCE(msk->pm.add_addr_accepted =3D=3D 0)) { u8 limit_add_addr_accepted =3D mptcp_pm_get_limit_add_addr_accepted(msk); =20 --=20 2.51.0 From nobody Thu Nov 27 12:35:51 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id F1562309DAB; Tue, 18 Nov 2025 07:21:26 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763450487; cv=none; b=ny3DhtmWB0CAuqdjfF2Wfs7EvU8CILXmfVs3N1QwfS7IuSJeyhU93xX/IA1gGMyKOvWTBgiMeAgPsv6+dUAgNn8iYWU8WKFoYcn4ciuXVQ0aNChykrGFtY/OHMDC/AUMkGViF9xKXuMiz9y4qWEr6TqX1yU4BhyatZ5jQBlJzNg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763450487; c=relaxed/simple; bh=nORs0JZ35aLWRX1d/FPjUMCwhC0Fvx+aMRP1iDhjNj4=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=W0lrpmhCrG1zDNwGSd0knngmNCrc1KftmdUmZe2yZ2lP4qyTBcTd2ijDUGejgj8PVzk3PfOTcKevSo1REVPdbT3H59yTeZYokTlJQEPl7xLUgXJGlYZGZCddMmj7M6VJexK13N4ijIHLXA+lq4atN0jrE47D5bF9LB7B/NbeIg8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=Ps5wSGRM; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="Ps5wSGRM" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 0C4DCC4CEFB; Tue, 18 Nov 2025 07:21:23 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1763450486; bh=nORs0JZ35aLWRX1d/FPjUMCwhC0Fvx+aMRP1iDhjNj4=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=Ps5wSGRMEXrLsDNs1niiHg6h+SDOxdPsfk8aGsxfS5XuMCepem54qr4vsKApfh2Jj hrKkBm4pAaxCNrD7eLJvkuFkRHO5y2t+Dk7jF8LIy9AP8rZ1/eYcmNppS8qLYJGfrn QCE16+7CYXAZCSGNYbCODqTMalHEl7zGZxMeo0gfMPl5tarTdk7bRZsjNFMlkVtgCC VlXpfPeVK0O5dtnDBPcJz9w5e8jAcIqWPK0rVWxRSgq0pGQ9hj24zqajs0ypWF2Xg4 DoKyfE4h/2eNpmgkwv5O9cRB6WEQPk+gJVVDaadW+pcl2oGMmuaZYY6yk8IgghAlqV 7oAJ5Emwe3c0A== From: "Matthieu Baerts (NGI0)" Date: Tue, 18 Nov 2025 08:20:29 +0100 Subject: [PATCH net 11/11] selftests: mptcp: add a check for 'add_addr_accepted' Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20251118-net-mptcp-misc-fixes-6-18-rc6-v1-11-806d3781c95f@kernel.org> References: <20251118-net-mptcp-misc-fixes-6-18-rc6-v1-0-806d3781c95f@kernel.org> In-Reply-To: <20251118-net-mptcp-misc-fixes-6-18-rc6-v1-0-806d3781c95f@kernel.org> To: Mat Martineau , Geliang Tang , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman , Shuah Khan , Florian Westphal Cc: netdev@vger.kernel.org, mptcp@lists.linux.dev, linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, "Matthieu Baerts (NGI0)" , Gang Yan X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=2574; i=matttbe@kernel.org; h=from:subject:message-id; bh=8Tipnr3on2+y5jazX/inS26vGb24rWiHvlpOIxEdOB4=; b=owGbwMvMwCVWo/Th0Gd3rumMp9WSGDJl5IL63RrPiJgoqTbEbBAQsJyrefPict2N4f8c29ZU3 3oxS/pYRykLgxgXg6yYIot0W2T+zOdVvCVefhYwc1iZQIYwcHEKwET6LBkZPmww6L+g+fZ7Z/CF ztsMosJWk2ZkzpvBurLs4ubGzWZ5Cxj+u/wP+dcTpJfGYCAT6H7Wp8hgR+E+/yybtCvtfFuvG67 nBAA= X-Developer-Key: i=matttbe@kernel.org; a=openpgp; fpr=E8CB85F76877057A6E27F77AF6B7824F4269A073 From: Gang Yan The previous patch fixed an issue with the 'add_addr_accepted' counter. This was not spot by the test suite. Check this counter and 'add_addr_signal' in MPTCP Join 'delete re-add signal' test. This should help spotting similar regressions later on. These counters are crucial for ensuring the MPTCP path manager correctly handles the subflow creation via 'ADD_ADDR'. Signed-off-by: Gang Yan Reviewed-by: Geliang Tang Reviewed-by: Matthieu Baerts (NGI0) Signed-off-by: Matthieu Baerts (NGI0) --- tools/testing/selftests/net/mptcp/mptcp_join.sh | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/tools/testing/selftests/net/mptcp/mptcp_join.sh b/tools/testin= g/selftests/net/mptcp/mptcp_join.sh index 74632beae2c6..43f31f8d587f 100755 --- a/tools/testing/selftests/net/mptcp/mptcp_join.sh +++ b/tools/testing/selftests/net/mptcp/mptcp_join.sh @@ -4055,38 +4055,45 @@ endpoint_tests() $ns1 10.0.2.1 id 1 flags signal chk_subflow_nr "before delete" 2 chk_mptcp_info subflows 1 subflows 1 + chk_mptcp_info add_addr_signal 2 add_addr_accepted 1 =20 pm_nl_del_endpoint $ns1 1 10.0.2.1 pm_nl_del_endpoint $ns1 2 224.0.0.1 sleep 0.5 chk_subflow_nr "after delete" 1 chk_mptcp_info subflows 0 subflows 0 + chk_mptcp_info add_addr_signal 0 add_addr_accepted 0 =20 pm_nl_add_endpoint $ns1 10.0.2.1 id 1 flags signal pm_nl_add_endpoint $ns1 10.0.3.1 id 2 flags signal wait_mpj $ns2 chk_subflow_nr "after re-add" 3 chk_mptcp_info subflows 2 subflows 2 + chk_mptcp_info add_addr_signal 2 add_addr_accepted 2 =20 pm_nl_del_endpoint $ns1 42 10.0.1.1 sleep 0.5 chk_subflow_nr "after delete ID 0" 2 chk_mptcp_info subflows 2 subflows 2 + chk_mptcp_info add_addr_signal 2 add_addr_accepted 2 =20 pm_nl_add_endpoint $ns1 10.0.1.1 id 99 flags signal wait_mpj $ns2 chk_subflow_nr "after re-add ID 0" 3 chk_mptcp_info subflows 3 subflows 3 + chk_mptcp_info add_addr_signal 3 add_addr_accepted 2 =20 pm_nl_del_endpoint $ns1 99 10.0.1.1 sleep 0.5 chk_subflow_nr "after re-delete ID 0" 2 chk_mptcp_info subflows 2 subflows 2 + chk_mptcp_info add_addr_signal 2 add_addr_accepted 2 =20 pm_nl_add_endpoint $ns1 10.0.1.1 id 88 flags signal wait_mpj $ns2 chk_subflow_nr "after re-re-add ID 0" 3 chk_mptcp_info subflows 3 subflows 3 + chk_mptcp_info add_addr_signal 3 add_addr_accepted 2 mptcp_lib_kill_group_wait $tests_pid =20 kill_events_pids --=20 2.51.0