From nobody Mon May 25 18:09:44 2026 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 4293E3D4103; Fri, 15 May 2026 04:28: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=1778819291; cv=none; b=oJHhHPjmq2dI+0R/AbcpSTRC4oljxXg7MaigyX/6ga7riqIpjj6v3+RSZlsj4Z6QUZxTZaAc4yOEEmRSmYuE0YrZ0KKcqIxRPWgtYR5uJVH7XYQF8JDwY7/McKeibYINUTAjYa/1LjhYGIbNnTIDMBxqP89QEfOSx5UGwntc25M= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778819291; c=relaxed/simple; bh=qQvn5axOR+yyPoQDWmxod2/JnSKoOIIR/aijmbsFW08=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=OH7VsWkMSjVgkJhIlVRWzwWFAEg16v0TyBX9W49FP6wH3Ci0N7Y4PVNFHUaK1VYOYT+5ayYAMJaek+1Bm4JHlq6JX0SkfJMdh3G9Nd9B4yb2SDj1vcTLIBp/dz6VAW9nIULq6JhV//IzrqdGB1WF3x5LYWve9eDdrjiXDaTbV+M= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=F7GwFW2b; 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="F7GwFW2b" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 6284AC2BCB0; Fri, 15 May 2026 04:28:05 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1778819290; bh=qQvn5axOR+yyPoQDWmxod2/JnSKoOIIR/aijmbsFW08=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=F7GwFW2bvGWtBJMJ/SWBFZs/qMW8nitfD6DuEIXwVCAppM6bi1ulBI9AyLqCQilYb 8IRpDpD2bwy05O8a6WQrc7q5GQkphxuRIgOq90Ui7Nn3hegDr+zMtwpF7Zi91j1d5d u/Q65+KlPT7VbDNAwUtBy0AW/3BydTRnyW9ujxoypw30sdQJ3McOim/IGN/TESMrXV LPETmMenKoYuknahpyn7FeEkI5WxrWrUJT8vFERHWWj5OOMK/PXQRK/acK1pRAR2Vg M+hewsHfL5CtgHK4z5t/W8M8Afh8lq7lwhd3YeJQVB8LOmY/z+uYW+ZN8liVyuYU2W Xdp4tzQakpQiw== From: "Matthieu Baerts (NGI0)" Date: Fri, 15 May 2026 06:27:32 +0200 Subject: [PATCH net v2 1/6] mptcp: do not drop partial packets 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: <20260515-net-mptcp-misc-fixes-7-1-rc4-v2-1-701e96419f2f@kernel.org> References: <20260515-net-mptcp-misc-fixes-7-1-rc4-v2-0-701e96419f2f@kernel.org> In-Reply-To: <20260515-net-mptcp-misc-fixes-7-1-rc4-v2-0-701e96419f2f@kernel.org> To: Mat Martineau , Geliang Tang , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman , Shuah Khan Cc: netdev@vger.kernel.org, mptcp@lists.linux.dev, linux-kernel@vger.kernel.org, "Matthieu Baerts (NGI0)" , linux-kselftest@vger.kernel.org, Eric Dumazet , Shardul Bankar , stable@vger.kernel.org X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=3127; i=matttbe@kernel.org; h=from:subject:message-id; bh=doSwMYEfSiK6uGg6E6Qa8BN/Nu92k84XWlJ5BdjtdXs=; b=owEBbQKS/ZANAwAIAfa3gk9CaaBzAcsmYgBqBqDKbnJLNZZ8c8s5pHZvcBHGHJIpaxSHCFZNV heMNzxSNl2JAjMEAAEIAB0WIQToy4X3aHcFem4n93r2t4JPQmmgcwUCagagygAKCRD2t4JPQmmg c/aTEACWjZEsrwGSQLpwSGVLtJu+sJryxm+vfcCfTgd3mIcxKwbypG7w54BvenJt+IbR8D7ATnH SC1d6TPSiQ1tz9LtvkNifBRh19nu7P7/KN/Ia96k8Op6g+euCHEQfRO/YaA5IrsYjyLEKOEfZe1 tmjT0ciNLc//AGnNv95ZhxmtfFRZ8x3V8sflSc9DTH9GVQth2u4KOFeWBP6uh9FaUP868mif1/k KNCiki4rlhIeoyploQkO2QdnFCi/vFyMeUunVEtwcpK4HNC5lEyGCnTwQHxr6aKXlWG0VXCg1QR ghCyLmxL7C5JKTDamK3Nlw7ZMAbmqTaWZS1ZCsEBNClraGUvf67VyyxMppXP6lIxc9wvdtDT+Ne SuIdTJYefDuaeZfoDc/qgH/YEtO2WycjgLTI62CIATaNYjORi8iqjsvvXTGb/IEHcHreVL6sP7r x2l0VF/pUUImCkAfGxfznm9PZMLaxtH1ePf27EQ1wFt9eWN0PmOMvt71WL0mdQFP0CPH9dZX6aa 5uJWNHOkNYhfSsOrxfR9wcWVdMibuKOeyL0zMMTG0SWIiSVRMJ6xeZCI9l/vUKT+mEutH5lcv/U b1uleHE9Otj+17EdIBqfd8Ek6qAq2KDs2Q3JbAjBiMlt4aep4ZUHVu7MYnKjmTHPrS2LvNDURXs e41aE7ws1WzTy3g== X-Developer-Key: i=matttbe@kernel.org; a=openpgp; fpr=E8CB85F76877057A6E27F77AF6B7824F4269A073 From: Shardul Bankar When a packet arrives with map_seq < ack_seq < end_seq, the beginning of the packet has already been acknowledged but the end contains new data. Currently the entire packet is dropped as "old data," forcing the sender to retransmit. Instead, skip the already-acked bytes by adjusting the skb offset and enqueue only the new portion. Update bytes_received and ack_seq to reflect the new data consumed. A previous attempt at this fix has been sent by Paolo Abeni [1], but had issues [2]: it also added a zero-window check and changed rcv_wnd_sent initialization, which caused test regressions. This version addresses only the partial packet handling without modifying receive window accounting. Fixes: ab174ad8ef76 ("mptcp: move ooo skbs into msk out of order queue.") Cc: stable@vger.kernel.org Link: https://lore.kernel.org/c9b426a4e163aa3c4fe8b80c79f1a610f47ae7d8.1763= 075056.git.pabeni@redhat.com [1] Closes: https://github.com/multipath-tcp/mptcp_net-next/issues/600 [2] Signed-off-by: Shardul Bankar [pabeni@redhat.com: update map] Signed-off-by: Paolo Abeni Reviewed-by: Matthieu Baerts (NGI0) Signed-off-by: Matthieu Baerts (NGI0) --- v3: (Paolo) - update map_seq, too (AI tool) v2: (Shardul) - Drop the mptcp_try_coalesce() attempt for partial packets, since non-zero offset always prevents coalescing (Paolo). - https://lore.kernel.org/20260422143931.43281-1-shardul.b@mpiricsoftware= .com v1: (Shardul) - https://lore.kernel.org/20260422120954.8877-1-shardul.b@mpiricsoftware.= com v0: (Paolo) - https://lore.kernel.org/mptcp/c9b426a4e163aa3c4fe8b80c79f1a610f47ae7d8.= 1763075056.git.pabeni@redhat.com --- net/mptcp/protocol.c | 24 +++++++++++++++++++----- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/net/mptcp/protocol.c b/net/mptcp/protocol.c index 4546a8b09884..859df49e16dc 100644 --- a/net/mptcp/protocol.c +++ b/net/mptcp/protocol.c @@ -397,12 +397,26 @@ static bool __mptcp_move_skb(struct sock *sk, struct = sk_buff *skb) return false; } =20 - /* old data, keep it simple and drop the whole pkt, sender - * will retransmit as needed, if needed. + /* Completely old data? */ + if (!after64(MPTCP_SKB_CB(skb)->end_seq, msk->ack_seq)) { + MPTCP_INC_STATS(sock_net(sk), MPTCP_MIB_DUPDATA); + mptcp_drop(sk, skb); + return false; + } + + /* Partial packet: map_seq < ack_seq < end_seq. + * Skip the already-acked bytes and enqueue the new data. */ - MPTCP_INC_STATS(sock_net(sk), MPTCP_MIB_DUPDATA); - mptcp_drop(sk, skb); - return false; + copy_len =3D MPTCP_SKB_CB(skb)->end_seq - msk->ack_seq; + MPTCP_SKB_CB(skb)->offset +=3D msk->ack_seq - MPTCP_SKB_CB(skb)->map_seq; + MPTCP_SKB_CB(skb)->map_seq +=3D msk->ack_seq - + MPTCP_SKB_CB(skb)->map_seq; + msk->bytes_received +=3D copy_len; + WRITE_ONCE(msk->ack_seq, msk->ack_seq + copy_len); + + skb_set_owner_r(skb, sk); + __skb_queue_tail(&sk->sk_receive_queue, skb); + return true; } =20 static void mptcp_stop_rtx_timer(struct sock *sk) --=20 2.53.0 From nobody Mon May 25 18:09:44 2026 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 A6DBD3D412C; Fri, 15 May 2026 04:28: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=1778819297; cv=none; b=JNMl1NlCwoho+j18YyGceux04y4JEpbYRhZFzwJLuYnP1jODnopnopGhxMzBYmuORvPono71JXns41vdVVNdpAFXMBYi64/Kh/rp1Nbg1c0edYgnm51o66HuYKI+2j/DM/UC2GJMyHo45Tb9PiJPvd37HK6uO2Uz330XLeW6cGA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778819297; c=relaxed/simple; bh=8Q4veE2pixKdG2Hn7ZQPBXIgIhaLZqlRWfE2OTr3Kas=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=K8nSXkOb1wYe09TghXmVdGCPPA1BImzOZre4kdNXKbP4M1eHKiJpRj9UW87cyA8dSTbuojnKqkNVK0lXbAayc/xOSB2iV9UcqDpRCuczoufv/BObd7iF/IVbXYB2GmJhu2bbsVJwo6V26a/is6ISe7+zcZU89xMERftH+GQ28Wk= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=gqIKx34G; 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="gqIKx34G" Received: by smtp.kernel.org (Postfix) with ESMTPSA id BE49CC2BCB0; Fri, 15 May 2026 04:28:11 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1778819297; bh=8Q4veE2pixKdG2Hn7ZQPBXIgIhaLZqlRWfE2OTr3Kas=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=gqIKx34GRy6wAY2QbGGu0hpg8TX5W5QKPDO92XebEqwv2sz2HUfnUY8QFSnM48Bjb iYgdAq4rz4kQpOxzZLzFdDj3sW6DuuKoY1ik+kgYQaYTOX5rpbjP1s/wZNDzyDGGp3 hEUf37hJ/1R5hBXH62j48LeiQiMxgvgXFifq2HdcQfxy8dWOaIW1Hnc3wmHYstqDJc 1cUmZ+LuP3gmPHpWl4GD4EWi8J/ZlDm+IjFjDD1vsC45lk69zQy17gi+QJEhC+Ixfk jzNbM6YwCeZtR1Fk9CZR2GnT+y26NZC6ne53VuC2dgH6eCuwsaPx8JvH+3dTj4pcV0 RPRh+QxS/9+Ow== From: "Matthieu Baerts (NGI0)" Date: Fri, 15 May 2026 06:27:33 +0200 Subject: [PATCH net v2 2/6] mptcp: pm: fix ADD_ADDR timer infinite retry on option space insufficient 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: <20260515-net-mptcp-misc-fixes-7-1-rc4-v2-2-701e96419f2f@kernel.org> References: <20260515-net-mptcp-misc-fixes-7-1-rc4-v2-0-701e96419f2f@kernel.org> In-Reply-To: <20260515-net-mptcp-misc-fixes-7-1-rc4-v2-0-701e96419f2f@kernel.org> To: Mat Martineau , Geliang Tang , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman , Shuah Khan Cc: netdev@vger.kernel.org, mptcp@lists.linux.dev, linux-kernel@vger.kernel.org, "Matthieu Baerts (NGI0)" , linux-kselftest@vger.kernel.org, Eric Dumazet , Li Xiasong , stable@vger.kernel.org X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=4928; i=matttbe@kernel.org; h=from:subject:message-id; bh=sPnzFdsNttVGUezP0ccoEY3L+m3b4Tf5peNFQD479qA=; b=owEBbQKS/ZANAwAIAfa3gk9CaaBzAcsmYgBqBqDLcYJA4WE6mqKzqstI/rKwiEv8H6EB1XDh7 3mwBNeAA0CJAjMEAAEIAB0WIQToy4X3aHcFem4n93r2t4JPQmmgcwUCagagywAKCRD2t4JPQmmg c9HPEADticNuhZOZ9gpX5QCh/YKkeF3BeN7tSiZwQRRZlp/1/FnZj14D+g9l5fvZAcr12vjMXRy BSQduzLSgy8oSYpmfjwk1qHbZaphbTr5Oo+LCpxdroOhH8dgeFXoeEHBlSWhvB+fvlupyvvQA7N /xKR7obww0zREXK9c45WYbBrvZURRJoOuHVf/ci8ZUheJNFUqlJ6srdwdmQaNkQ9X0MrpFpwhPU DxcJ1lxOd+Y0b8/SSECeHalC+K15U+V3aKUQbZLE/4yIHAgQHcTnSb3zUnWVaVlqgQm2elf2/ao jueqbYgpkD0Wwibg5iv/ZEC6BGAG8tTfftplbXdbWtfLzif3OTdiOq45MLYaomGdLnJ9G0ery+g tdKDjPCWF4LW0GupY3bAblVrRnIe51mbFVC5TV+J4YktGoZptqkKFsDt6nhNACwL1f1LtFE6S31 Z4/k2zAMIXEWsTRwQHiOphgC+P6zHaBmO0GAHV4+hlrbq5/Lmh8wF7Aji5Oba4vRyBG6Dj04/XQ KF4rPRiVGD5poB2ri9ShXzImn3f8Srx75Fg/rysT7rO0DIW0IBPxj7AxXeiv/6MDY/fV9oQXaHn B750NXOyPnI5eUfFoHnhgjJTtunpZdbdsAYlT0+utzdWLDrpnzPs01EsvTML9pHBIEKmrCVfKNo L+nTB2+b50wKClw== X-Developer-Key: i=matttbe@kernel.org; a=openpgp; fpr=E8CB85F76877057A6E27F77AF6B7824F4269A073 From: Li Xiasong When TCP option space is insufficient (e.g., when sending ADD_ADDR with an IPv6 address and port while tcp_timestamps is enabled), the original code jumped to out_unlock without clearing the addr_signal flag. This caused mptcp_pm_add_timer to keep rescheduling indefinitely, not sending ADD_ADDR, preventing subsequent addresses in the endpoint list from being announced. Handle this case by clearing the ADD_ADDR signal and skipping the matching ADD_ADDR retransmission entry. The skip path cancels the matching timer (with id check) and advances PM state progression, preserving forward progress to subsequent PM work. This cancellation is inherently best-effort. A concurrent add_timer callback may already be running and may acquire pm.lock before the cancel path updates entry state. In that case, one final ADD_ADDR transmit attempt can still be executed. Once the cancel path sets entry->retrans_times to ADD_ADDR_RETRANS_MAX, the callback-side retrans_times check suppresses further ADD_ADDR retransmissions. Note that when an ADD_ADDR is being prepared, a pure-ACK is queued. On the output side, it means that it is fine to skip non-pure-ACK packets, when drop_other_suboptions is set: a pure-ACK will be processed soon after. Fixes: 00cfd77b9063 ("mptcp: retransmit ADD_ADDR when timeout") Cc: stable@vger.kernel.org Signed-off-by: Li Xiasong Reviewed-by: Matthieu Baerts (NGI0) Signed-off-by: Matthieu Baerts (NGI0) --- v2: add a note for sashiko-nipa's: it's a false positive. --- net/mptcp/pm.c | 56 ++++++++++++++++++++++++++++++++++++++++++++++--------= -- 1 file changed, 46 insertions(+), 10 deletions(-) diff --git a/net/mptcp/pm.c b/net/mptcp/pm.c index 3c152bf66cd5..3e770c7407e1 100644 --- a/net/mptcp/pm.c +++ b/net/mptcp/pm.c @@ -364,7 +364,13 @@ static void mptcp_pm_add_timer(struct timer_list *time= r) =20 spin_lock_bh(&msk->pm.lock); =20 - if (!mptcp_pm_should_add_signal_addr(msk)) { + /* The cancel path (mptcp_pm_del_add_timer()) can race with this + * callback. Once cancel updates retrans_times to MAX, suppress further + * retransmissions here. If this callback acquires pm.lock first, one + * final transmit attempt is still possible. + */ + if (entry->retrans_times < ADD_ADDR_RETRANS_MAX && + !mptcp_pm_should_add_signal_addr(msk)) { pr_debug("retransmit ADD_ADDR id=3D%d\n", entry->addr.id); mptcp_pm_announce_addr(msk, &entry->addr, false); mptcp_pm_add_addr_send_ack(msk); @@ -414,8 +420,12 @@ mptcp_pm_del_add_timer(struct mptcp_sock *msk, /* Note: entry might have been removed by another thread. * We hold rcu_read_lock() to ensure it is not freed under us. */ - if (stop_timer) - sk_stop_timer_sync(sk, &entry->add_timer); + if (stop_timer) { + if (check_id) + sk_stop_timer(sk, &entry->add_timer); + else + sk_stop_timer_sync(sk, &entry->add_timer); + } =20 rcu_read_unlock(); return entry; @@ -882,6 +892,7 @@ bool mptcp_pm_add_addr_signal(struct mptcp_sock *msk, c= onst struct sk_buff *skb, struct mptcp_addr_info *addr, bool *echo, bool *drop_other_suboptions) { + bool skip_add_addr =3D false; int ret =3D false; u8 add_addr; u8 family; @@ -903,24 +914,49 @@ bool mptcp_pm_add_addr_signal(struct mptcp_sock *msk,= const struct sk_buff *skb, } =20 *echo =3D mptcp_pm_should_add_signal_echo(msk); - port =3D !!(*echo ? msk->pm.remote.port : msk->pm.local.port); - - family =3D *echo ? msk->pm.remote.family : msk->pm.local.family; - if (remaining < mptcp_add_addr_len(family, *echo, port)) - goto out_unlock; - if (*echo) { *addr =3D msk->pm.remote; add_addr =3D msk->pm.addr_signal & ~BIT(MPTCP_ADD_ADDR_ECHO); + port =3D !!msk->pm.remote.port; + family =3D msk->pm.remote.family; } else { *addr =3D msk->pm.local; add_addr =3D msk->pm.addr_signal & ~BIT(MPTCP_ADD_ADDR_SIGNAL); + port =3D !!msk->pm.local.port; + family =3D msk->pm.local.family; } - WRITE_ONCE(msk->pm.addr_signal, add_addr); + + if (remaining < mptcp_add_addr_len(family, *echo, port)) { + struct net *net =3D sock_net((struct sock *)msk); + + if (!*drop_other_suboptions) + goto out_unlock; + + if (*echo) { + MPTCP_INC_STATS(net, MPTCP_MIB_ECHOADDTXDROP); + } else { + skip_add_addr =3D true; + MPTCP_INC_STATS(net, MPTCP_MIB_ADDADDRTXDROP); + } + goto drop_signal_mark; + } + ret =3D true; =20 +drop_signal_mark: + WRITE_ONCE(msk->pm.addr_signal, add_addr); + out_unlock: spin_unlock_bh(&msk->pm.lock); + + /* On pure-ACK option-space exhaustion, stop retrying this ADD_ADDR: + * clear the signal bit, cancel the matching retransmission timer, and + * let the PM state machine progress. + */ + if (skip_add_addr) { + mptcp_pm_del_add_timer(msk, addr, true); + mptcp_pm_subflow_established(msk); + } return ret; } =20 --=20 2.53.0 From nobody Mon May 25 18:09:44 2026 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 023DC34166B; Fri, 15 May 2026 04:28:24 +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=1778819305; cv=none; b=T7m+C8MRVmXYO125IG63JVpXE+xXcOTDy664fssry9T2n7pzJsphAlMurlAJk19GTkCQjQu5B2hiMOdD390C2t0p4dOaeSiCj3hPzRDd7TT4pHr+LxDHotTuKfgtH0WDzGqA7bpGO0PuQKS8VnR6HHmWMy0rz5GQ17L14S8ATvY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778819305; c=relaxed/simple; bh=HAqn1a+1m/18t3HW1mWpO6nHBtvV4r5btqoAhjlEJO4=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=mTTWUn4eQz/psIsnBjL7mkaPIFNayzWu+jhsVn4FoQ2Wjg2FAgK8eXE8C7ZuZUsfyNIOb9xjM0vJ1oqEFeisTvvGJ+8pvu9O7N0/sbY+B34spTFxlXl1aP7fsnpLqd8h5XZTtoKnxSKjVSdJoh7j420/IrDaKrLHn89Oab6yXRQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=OUjzUqi0; 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="OUjzUqi0" Received: by smtp.kernel.org (Postfix) with ESMTPSA id EB96BC2BCC7; Fri, 15 May 2026 04:28:17 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1778819304; bh=HAqn1a+1m/18t3HW1mWpO6nHBtvV4r5btqoAhjlEJO4=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=OUjzUqi0na5M6Fgu6iSj0tg4XAi4UmNw7zbRuPajov2PubJ6cMaFOMjfPJ2zXJjQ0 jp6pDX4oLRV/TuL7EN8IG2QcdadGHN+t363itYBH2kZ0daovBhdpeHq2pcxeZ5MOi9 njn297WjiGSPVLXDjMNgqgPNMKC+QQHrdlAs7MMEI/Dbie00wrpovCBcmFQmR/7SAJ rYRH8qB5GsMXO3fl6LuqbzRXfnFVuJUBzm/j6SxdKUoQSYjiuSVedz4XblVmQKy8l0 6raC0cGpy+DjrJr8CEyvN5ZwMNhV1786S5QjSbhQM1GS1VFHXiWCFowRkNDyJmd8Qe OAWVGlZ6DZ8og== From: "Matthieu Baerts (NGI0)" Date: Fri, 15 May 2026 06:27:34 +0200 Subject: [PATCH net v2 3/6] selftests: mptcp: join: cover ADD_ADDR tx drop and list progress 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: <20260515-net-mptcp-misc-fixes-7-1-rc4-v2-3-701e96419f2f@kernel.org> References: <20260515-net-mptcp-misc-fixes-7-1-rc4-v2-0-701e96419f2f@kernel.org> In-Reply-To: <20260515-net-mptcp-misc-fixes-7-1-rc4-v2-0-701e96419f2f@kernel.org> To: Mat Martineau , Geliang Tang , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman , Shuah Khan Cc: netdev@vger.kernel.org, mptcp@lists.linux.dev, linux-kernel@vger.kernel.org, "Matthieu Baerts (NGI0)" , linux-kselftest@vger.kernel.org, Eric Dumazet , Li Xiasong X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=2117; i=matttbe@kernel.org; h=from:subject:message-id; bh=/orNxmenZ9vHQomKpdCaVKJWq+BaFJUdd4uWduQYZew=; b=owEBbQKS/ZANAwAIAfa3gk9CaaBzAcsmYgBqBqDLmosos3y82QGnkZPi7G3GBpsbpSdwwxZsy IU5M3KvIK6JAjMEAAEIAB0WIQToy4X3aHcFem4n93r2t4JPQmmgcwUCagagywAKCRD2t4JPQmmg cwkED/9gRC753yOCpep3/iO8STH1AONnovxrca0oEsOdwITY0Vli96RMis2WM7E/AmBV1TIW/NM MHKGBrOBSsYi6NKwz6B7zYYYmn7DpUNm/lPwX5yBveMkha/Ou3UWeO11LRuUtv3xqz6Ac7FZyNI qnbY9BNfyh68Bc1k54ZUuDk+gvlpo4w4Nj+sd6NX0fccPUolPoXImRWzEvr+BXnPvDi1q0slocK 7OuRKvYFL88uumT6hnpcpOthJKsGGygh0MujGB9pjG4RxcbBkRaKYLFhvKOwM1DxY9j+EcFYjda 4mJt7YxsZ451bYHIQYI3TuUAtaBgW89JoXN8nJKSOxIxHwB5Ze3glxraYsNl6WKzdmSef+LIadH VLFD4c4IH4Xvi55/pP0AFzXCR03ytc2sFSXkAMUpZcJ+KCfi1YQfTZzGaN9lz4TKFvcN8Qo98eS 23AWCee4DCRAHpwTcn/LEDXiczJZTBCTD1rBpxXlfPnXUBfhBxDhhX+VQJWwSKH2PXhIoqVLdJe VLHCgiveCjZgLlnocUdqCoiTaF8Dr46OOclu8hb6twmzNivOi3l5CTUog5DWBFLS8ywTwAdmS6i 6TygLMyUI+2LaDNX/4zosvzzSFwO87CcTZbzuzZo9gCypfo1kIWepwmkC9UavXHvnMtnG9uqRTn Rkc+h7z3JdEm6Jg== X-Developer-Key: i=matttbe@kernel.org; a=openpgp; fpr=E8CB85F76877057A6E27F77AF6B7824F4269A073 From: Li Xiasong Extend add_addr_ports_tests with IPv6 signaling cases that exercise ADD_ADDR tx-space shortage when tcp_timestamps are enabled. Add one case to verify PM still progresses to later signal endpoints after the first one is dropped. This covers both failure accounting and the non-blocking behavior of the announce list after a tx-space drop on pure ACK. Signed-off-by: Li Xiasong Reviewed-by: Matthieu Baerts (NGI0) Signed-off-by: Matthieu Baerts (NGI0) --- To: Shuah Khan Cc: linux-kselftest@vger.kernel.org --- tools/testing/selftests/net/mptcp/mptcp_join.sh | 31 +++++++++++++++++++++= ++++ 1 file changed, 31 insertions(+) diff --git a/tools/testing/selftests/net/mptcp/mptcp_join.sh b/tools/testin= g/selftests/net/mptcp/mptcp_join.sh index beec41f6662a..5acd12021e6e 100755 --- a/tools/testing/selftests/net/mptcp/mptcp_join.sh +++ b/tools/testing/selftests/net/mptcp/mptcp_join.sh @@ -1828,6 +1828,22 @@ chk_add_tx_nr() fi } =20 +chk_add_drop_tx_nr() +{ + local drop_tx_nr=3D$1 + local count + + print_check "add addr tx drop" + count=3D$(mptcp_lib_get_counter ${ns1} "MPTcpExtAddAddrTxDrop") + if [ -z "$count" ]; then + print_skip + elif [ "$count" !=3D "$drop_tx_nr" ]; then + fail_test "got $count ADD_ADDR drop[s] TX, expected $drop_tx_nr" + else + print_ok + fi +} + chk_rm_nr() { local rm_addr_nr=3D$1 @@ -3278,6 +3294,21 @@ add_addr_ports_tests() =20 chk_mpc_endp_attempt ${retl} 1 fi + + # first signal address drops, second one still progresses + if reset "signal addr list progresses after tx drop"; then + pm_nl_set_limits $ns1 0 2 + pm_nl_set_limits $ns2 1 0 + ip netns exec $ns1 sysctl -q net.ipv4.tcp_timestamps=3D1 + ip netns exec $ns2 sysctl -q net.ipv4.tcp_timestamps=3D1 + + pm_nl_add_endpoint $ns1 dead:beef:2::1 flags signal port 10100 + pm_nl_add_endpoint $ns1 dead:beef:3::1 flags signal + run_tests $ns1 $ns2 dead:beef:1::1 + chk_add_drop_tx_nr 1 + chk_add_tx_nr 1 1 + chk_add_nr 1 1 0 + fi } =20 bind_tests() --=20 2.53.0 From nobody Mon May 25 18:09:44 2026 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 2DC993D565C; Fri, 15 May 2026 04:28:29 +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=1778819310; cv=none; b=P0auMTCDjUpP+KXo1fW60PlBNdEb7AYZVJsSdwawHnHIcwheDhbFoEqbfWysKuNXZPxnJ+fAs1Fr+W1DKg9qHgyJV8431onuB6cTAV3qKKZyc/76wGgnPql2ITzPef63LQdChWU56AJaLCdVGuauKy9CbYWFa64onMOlgUfATY4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778819310; c=relaxed/simple; bh=875ceNXWDGdvQ7I0OyeVxJ2mbgg70m3Ihld1Lkt9Y1g=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=I/O3qJlDXulFPDzq5KBWdqEUAychy+FUsK0/GOj7MzMx0mbZ0vPml5Ea8pHgUI+J178ogGd2XgzYdIWEDQ+aBGE0ju5kBgPG54g1Im7X3+vG7gpiqatOKug6QoRtKznDyhgKZwv3Yk3GS9B+BTtEr3reH3bjLAQTltqAxqI5tug= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=uKcYpBSv; 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="uKcYpBSv" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 3AEFEC2BCB0; Fri, 15 May 2026 04:28:24 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1778819309; bh=875ceNXWDGdvQ7I0OyeVxJ2mbgg70m3Ihld1Lkt9Y1g=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=uKcYpBSvX67NGYAAJiRIhiQx2YK/dnm4SnL0m1U7/oFd7sl1Bw7zPqA4o7uDytI3u HC43zxBdFIOslG5ZoByzMuK2f1h9vsQj+OwWHlO3Ysv4lr/WiHcmJb8zJtI41DgIOw uCc+3S7zCcr3g55r5TYJphjMuaH6fT1fq8fjM4NuRLKR/xZic5Q83LGpUfeGFeIbJY /2f90287P90dh4WyNs1sYlKws2Kv6xdrBmgHtsk/pwrXYrAxsbHpN2+7hhvKeptwnd 1QNtoT83X/8zvyjSQyaHfVV9RxPpOLw6uksvp4QS2rHgEN98CfWdpYlA+sIBXL6jR/ 9JwQ8qU6k1JsQ== From: "Matthieu Baerts (NGI0)" Date: Fri, 15 May 2026 06:27:35 +0200 Subject: [PATCH net v2 4/6] mptcp: reset rcv wnd on disconnect 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: <20260515-net-mptcp-misc-fixes-7-1-rc4-v2-4-701e96419f2f@kernel.org> References: <20260515-net-mptcp-misc-fixes-7-1-rc4-v2-0-701e96419f2f@kernel.org> In-Reply-To: <20260515-net-mptcp-misc-fixes-7-1-rc4-v2-0-701e96419f2f@kernel.org> To: Mat Martineau , Geliang Tang , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman , Shuah Khan Cc: netdev@vger.kernel.org, mptcp@lists.linux.dev, linux-kernel@vger.kernel.org, "Matthieu Baerts (NGI0)" , linux-kselftest@vger.kernel.org, Eric Dumazet , stable@vger.kernel.org X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1366; i=matttbe@kernel.org; h=from:subject:message-id; bh=mAbY17mEam5+3zBGBgEjswNy0Y5ydPBnaOl3wDshqq4=; b=owEBbQKS/ZANAwAIAfa3gk9CaaBzAcsmYgBqBqDLPW/zjghrSZpVUWfb6UnjICmNt5CgyUSTH rYaORO66saJAjMEAAEIAB0WIQToy4X3aHcFem4n93r2t4JPQmmgcwUCagagywAKCRD2t4JPQmmg cz+OD/9eJOXbAAUcoERUNodDFeyihCarmMMy4RaW3C4Fora6evDIKN2G/IlXEWt9S046D/RX1Rb 0P839wn5v4l3D7iH8l8akCQW9t3g1E5kbPalGiw+dnzSXZofPOwcDqtFGiIOEp+PoYZi82mIkit z5bxjd+Lyz0zZKdE6f1U1uJS4Tm/J/9WNdMwsX2QrDo/wZMXj/o5w6bOr9ZNmWLEzsHi2P80VCP Wicc96ch125DxrNGqGiWLFKk/z2I4Z1U4gUWL14JQMqGmaU7lciqQLOWTTIcc9MbKkeuwO7ca1D 3XUH1YPr9XIOCStxMXr0F4b1v6RNdhQlUh+Ul8w6wTQehfe0p13b3xgWq/kTsW4C1jAMYA4gry5 mqVoQkMkCHDNU3Hf39/h64/WTqesiQT+LUoL+SEf5ljU5WYBCeK0qA8ywqFp0jV/a3QEtBFueCw dR20A9K+Mim01VBs1jV6Psul/VriJjA1MXLvJsF4egSJvnweZadRzD4Urg0KQOt7qIcoVPVqSRo 6ztV2hkGIKkpn8LkVQc6ikHGrLgI2S3uSs/e5I2WsifZHYAC/oVh47F1BQTqaaIjYGML0jA1TUI IlNrOV//qPgSL8m1TxKk9XZxfeLuj0GTkJDnHEv2NXsMj46ebqRAS8wqE3Co7SX6Y8xzB1/oiRf GQqNEqASBICXE2g== X-Developer-Key: i=matttbe@kernel.org; a=openpgp; fpr=E8CB85F76877057A6E27F77AF6B7824F4269A073 From: Paolo Abeni If the MPTCP socket fallback to TCP before the MP handshake completion, the IASN remain 0, and the rcv_wnd_sent field is not explicitly initialized, just incremented over time with the data transfer. At disconnect time such value is not cleared. If the next connection falls back to TCP before the MP handshake completion, the data transfer will keep incrementing the receive window end sequence starting from the last value used in the previous connection: the announced window will be unrelated from the actual receiver buffer size and likely too big. Address the issue zeroing the field at disconnect time. Fixes: b29fcfb54cd7 ("mptcp: full disconnect implementation") 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 | 1 + 1 file changed, 1 insertion(+) diff --git a/net/mptcp/protocol.c b/net/mptcp/protocol.c index 859df49e16dc..a72a6ad6ee8b 100644 --- a/net/mptcp/protocol.c +++ b/net/mptcp/protocol.c @@ -3487,6 +3487,7 @@ static int mptcp_disconnect(struct sock *sk, int flag= s) =20 /* for fallback's sake */ WRITE_ONCE(msk->ack_seq, 0); + atomic64_set(&msk->rcv_wnd_sent, 0); =20 WRITE_ONCE(sk->sk_shutdown, 0); sk_error_report(sk); --=20 2.53.0 From nobody Mon May 25 18:09:44 2026 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 8E9B63D47AC; Fri, 15 May 2026 04:28:35 +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=1778819315; cv=none; b=EGrYAVPTHuaHLjcsUQmvigwU7SPcu4CsAbjJCGW2dbrCcEJTyVPm9PTcR7SqcuJ9XVfQlaxJ8/yzh6xrGf9lrnp27BhSo5+89P+2apBai2IlXdvsUaeWcf8CDOGFv2VcxOrrIsECVEqRadkm50MQTfv0E4asz8bScJMWNY14yFI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778819315; c=relaxed/simple; bh=NXW/AKb3eThsc3uX6LdHwL0uOlXEWyIV7ySV/o1zgVI=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=A9LTZvfn3k/hfWA1IaeNBO2dcpCqdgci6U2uCeNeStjeda54OV8EaIdPWk4aqj6uQ91178TBCsDwI/hnb/wvR673OfEtAX5qaG7W2Y4jzrDfrNEjwdaiEYp5PXoHPz/qoDJhe4ZCku8i7cjj+qazqly9d5N+lM0dc/m/UV+pYsI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=FDlFKB+f; 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="FDlFKB+f" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 73516C4AF09; Fri, 15 May 2026 04:28:30 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1778819315; bh=NXW/AKb3eThsc3uX6LdHwL0uOlXEWyIV7ySV/o1zgVI=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=FDlFKB+fcqC3tZyLitivh9PaoUT/zP+wEWtAK1P0DNIB5FjxbYfUI1VSgkr6y1Au9 gtQSNCXpUHZ7FLZm0Isr/QOVZx9ZoGZAYLu382Soto/3GSW3MmN11mgI7mubutgY00 CzPzorq65uq125bHM4yJkOsTLxjEm5WpsYrBnCTmhU+n4RDsWn4XJZ6ziglZgc9XBm dYL44Y2wNHqDvr5bklE6mVKhp5ie8mYW4XkQ843Fe6N/uWqG+k1B5Z6wQ4RMCjQ6b1 wyMHN8H86gGKUWoZe6UbyD2wtHSxytSblEaFFfR+cj62GZjc6aVI3slgfhwW33tQMW O5aaquzwjk5cQ== From: "Matthieu Baerts (NGI0)" Date: Fri, 15 May 2026 06:27:36 +0200 Subject: [PATCH net v2 5/6] mptcp: update window_clamp on subflows when SO_RCVBUF is set 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: <20260515-net-mptcp-misc-fixes-7-1-rc4-v2-5-701e96419f2f@kernel.org> References: <20260515-net-mptcp-misc-fixes-7-1-rc4-v2-0-701e96419f2f@kernel.org> In-Reply-To: <20260515-net-mptcp-misc-fixes-7-1-rc4-v2-0-701e96419f2f@kernel.org> To: Mat Martineau , Geliang Tang , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman , Shuah Khan Cc: netdev@vger.kernel.org, mptcp@lists.linux.dev, linux-kernel@vger.kernel.org, "Matthieu Baerts (NGI0)" , linux-kselftest@vger.kernel.org, Eric Dumazet , Gang Yan , stable@vger.kernel.org X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=2489; i=matttbe@kernel.org; h=from:subject:message-id; bh=wBO9RvR2M1zOMeuAgvLcafVSCiXxv7gQQpGdmT32xos=; b=owEBbQKS/ZANAwAIAfa3gk9CaaBzAcsmYgBqBqDL65EGUO3wJhKrsuF39HyEmiFJxRfsn9dWd 8hQGBaeLReJAjMEAAEIAB0WIQToy4X3aHcFem4n93r2t4JPQmmgcwUCagagywAKCRD2t4JPQmmg cyBwD/4l7keh0K/58BUVhJQPOQNhiHmA9pgW9vkRoBQVaOHGXJdHqmSjltxAh20nw1EhLXBpSZj v8NINZz1B3HXVzwTUqKn04xrHFmX5d91lq8PBdtnryzvZyeCVoTkQTBAShwuwOXnzK+V9l7DWR4 WIIyr52cLjFkpN8Vu7OhpgVYeU0ATtyNoTdcbAS69BZIIzmPrebhUdgBQcYEpM5x8njd+hsMTJS kdD71hECaaA9qDNu3koW4Obv9ym1NdUW7oY7ziEwjKInvi2v9UPh5fuqBPaeIru3f5D3j85K3H8 SMWQsZiICAL1ot7L8UxVfv8tvV3Xzn4rZUmamIdex4UO1JNGJJmdlgKTv/DXtv976JWnlMs5e0y xFYjCg76TvtaOovfcUVVBK9TEHKrr+aawC0WKSDkCvDoZrfbppp4/pJlGE+589JjiAXvSNqqbVw ezYB+Bq9N2HPWR3aecmg4Igr7ASPsE5QbJH2rVz1fg/wYiZzIJx6omnCF2evLUck4dbZWEaJOOW OB4y1wiKo2jXWDKmPOuBKFuky9YqEGRuBcroJ4rZOKPd6qRLyiWB43EYcDXPjRailyNMNcbvnYN ZGDJOwrdWDb/5hJaO402i2Fuy+9VtiAPEnrAyUYH8E2lN8/cm+OzLqctjLgSY00FI7EdbGNwtzg NSHuw6/JHCE3VNQ== X-Developer-Key: i=matttbe@kernel.org; a=openpgp; fpr=E8CB85F76877057A6E27F77AF6B7824F4269A073 From: Gang Yan Add __mptcp_subflow_set_rcvbuf() helper to write the subflow sk_rcvbuf, but also to call the recently added tcp_set_rcvbuf() helper to update window_clamp. This is needed because the window clap is updated when scaling_ratio changes, in tcp_measure_rcv_mss(). Until scaling_ratio changes, the subflow is stuck with the old window clamp which may be based on a small initial buffer. Use this new helper in both mptcp_sol_socket_sync_intval() (setsockopt path) and sync_socket_options() (new subflow creation path). Note that this patch depends on commit b025461303d8 ("tcp: update window_clamp when SO_RCVBUF is set"): it fixes the issue on TCP side, but the same fix is needed on MPTCP side as well. Fixes: a2cbb1603943 ("tcp: Update window clamping condition") Cc: stable@vger.kernel.org Closes: https://github.com/multipath-tcp/mptcp_net-next/issues/619 Signed-off-by: Gang Yan Reviewed-by: Matthieu Baerts (NGI0) Signed-off-by: Matthieu Baerts (NGI0) --- v2: remove 'inline' keyword (NIPA) + update Fixes tag (Jakub) --- net/mptcp/sockopt.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/net/mptcp/sockopt.c b/net/mptcp/sockopt.c index 1cf608e7357b..87b5796d0135 100644 --- a/net/mptcp/sockopt.c +++ b/net/mptcp/sockopt.c @@ -67,6 +67,12 @@ static int mptcp_get_int_option(struct mptcp_sock *msk, = sockptr_t optval, return 0; } =20 +static void __mptcp_subflow_set_rcvbuf(struct sock *ssk, int val) +{ + WRITE_ONCE(ssk->sk_rcvbuf, val); + tcp_set_rcvbuf(ssk, val); +} + static void mptcp_sol_socket_sync_intval(struct mptcp_sock *msk, int optna= me, int val) { struct mptcp_subflow_context *subflow; @@ -100,7 +106,7 @@ static void mptcp_sol_socket_sync_intval(struct mptcp_s= ock *msk, int optname, in case SO_RCVBUF: case SO_RCVBUFFORCE: ssk->sk_userlocks |=3D SOCK_RCVBUF_LOCK; - WRITE_ONCE(ssk->sk_rcvbuf, sk->sk_rcvbuf); + __mptcp_subflow_set_rcvbuf(ssk, sk->sk_rcvbuf); break; case SO_MARK: if (READ_ONCE(ssk->sk_mark) !=3D sk->sk_mark) { @@ -1560,7 +1566,7 @@ static void sync_socket_options(struct mptcp_sock *ms= k, struct sock *ssk) mptcp_subflow_ctx(ssk)->cached_sndbuf =3D sk->sk_sndbuf; } if (sk->sk_userlocks & SOCK_RCVBUF_LOCK) - WRITE_ONCE(ssk->sk_rcvbuf, sk->sk_rcvbuf); + __mptcp_subflow_set_rcvbuf(ssk, sk->sk_rcvbuf); } =20 if (sock_flag(sk, SOCK_LINGER)) { --=20 2.53.0 From nobody Mon May 25 18:09:44 2026 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 CDFA83D4103; Fri, 15 May 2026 04:28:41 +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=1778819321; cv=none; b=oP2zv+cajHkqrb57ossCKbljJkrNs3zLCAB5yVwlIJlfTOamv69jyfC/y8xPJ3JuDQ7WSB2ihZUHP+RrmZA/gBCxnLxwWlHBK9qYdH1a+QlmzjmdyHw1mvLtYh3YT1xXU5V6g0HgDFcT2e9AZtw7mK+WIYt6VYGCUuaQ5nZ8JgU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778819321; c=relaxed/simple; bh=p8Ag+VQTdpeP2qTjHzEKq0SZLd+visfTveYHoYzjYvI=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Pfxfv0ekulAd2exjvkwMj2LgCwol+VqRSRrzhYvtfEsOZZ2HQT/nA/CVavz00AUsV9EspQTFGdYlt9olgHiw2Tk1pgW5ClrkjMOn7uk0t8M6VEkJ1Znv6aKvQOZzmyrKZwMAfJ4pRz2EOati2uX3yAHvR+4mlr7fP7AL1eqHR04= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=JyRd8jHh; 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="JyRd8jHh" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 187CDC2BCC7; Fri, 15 May 2026 04:28:35 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1778819321; bh=p8Ag+VQTdpeP2qTjHzEKq0SZLd+visfTveYHoYzjYvI=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=JyRd8jHhSblDBehunLDIXFMVK0YVc9hgDXLjT7VQboY3Iu1doG/1F9Mlb2AamzQ5C OMYEll0E891JMIJvyXAdWapNWstkmxnImRPhShsXmKBjfbrSnEZvHpJyKb1h6wNmlb vtebA5WNM4pi995YAF0lpSsPu0/YZOUoR4XCg7idqIgnUSceoej3g/xFlbmF9+Jjmx Q4R0G2Ge7ErmVyR95JHPtWsP83EfbBUBOIrBYtvD4iffyMuIbNQ+9CH3MLiYYFYYK7 lnzXnfuSKwRewbBFx5IFjPhJ5hSHUbl7CCZyd4ttbgeL4G/YPhuM9ywu5JUFrkzBUL MZeayu2FyPW9w== From: "Matthieu Baerts (NGI0)" Date: Fri, 15 May 2026 06:27:37 +0200 Subject: [PATCH net v2 6/6] selftests: mptcp: drop nanoseconds width specifier 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: <20260515-net-mptcp-misc-fixes-7-1-rc4-v2-6-701e96419f2f@kernel.org> References: <20260515-net-mptcp-misc-fixes-7-1-rc4-v2-0-701e96419f2f@kernel.org> In-Reply-To: <20260515-net-mptcp-misc-fixes-7-1-rc4-v2-0-701e96419f2f@kernel.org> To: Mat Martineau , Geliang Tang , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman , Shuah Khan Cc: netdev@vger.kernel.org, mptcp@lists.linux.dev, linux-kernel@vger.kernel.org, "Matthieu Baerts (NGI0)" , linux-kselftest@vger.kernel.org, Eric Dumazet , stable@vger.kernel.org X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=3811; i=matttbe@kernel.org; h=from:subject:message-id; bh=p8Ag+VQTdpeP2qTjHzEKq0SZLd+visfTveYHoYzjYvI=; b=owEBbQKS/ZANAwAIAfa3gk9CaaBzAcsmYgBqBqDLmm2dxmHj049HWW99vHr1qVTNX6z3DKVz7 DbYIxGVV9eJAjMEAAEIAB0WIQToy4X3aHcFem4n93r2t4JPQmmgcwUCagagywAKCRD2t4JPQmmg c7daEACJ1ZIXprKjL4UrJ7FWSx7uc/k1IZutTAqcHotyaQe5zXLx44nNJJ/p8/RmGa9D2K58iSZ /uypMNr60hM3kKF/IPsuUkZj488KUakzeeO5vhhQz6nuPp/aXuX9UxpqWjS1gWnaX44tNIFVqZv e73yAdL3EHIjjlYZxVGp3kaHus9qaYP9kTgMXHdrCDnmFm65y5UqGq4Kr5aVJo2DJ2agh2OpmCM TUQWw7bXvZuOiV/ylADurVC+fFDf3X9PGwfmWx1bs2J6BvPImzwOmwb1i7FYTl+hkXARTlmjRJa E9g1ylkzhjzPOGl7HWNodxnTHUuK429UmZLiVQsAZK75cmggoe+mfOWnDFvEZINEHFxlOTHGveM iH1TMPT8yzMEg/6vKkqfpZJIbdEvrmsOTGd7cnVzM7VYHZVFLXv9TFluvyaY3ef19osuBqpdDtc 5L6oPcyerkj8baW0tYc80mKpcjzhot7vdMDA/9z0nKLz/W3WcSo1ndv6xv3ov2kgGovG3IC+QiJ 95xbCSJbBdTvOAb33nzSoWTZqJu5vD86WBIev2sT9gy8F0ErzSw1hN416DiOc/9Moa4T8E+sURX +nm00fzjOBwcixoKcowmZipbkebYZ8+vDuOlztSY7BXjPYTVErwmAcQp2aM9Ug4ZqjZK09unSJQ mGa/E4TQtvdcCQg== X-Developer-Key: i=matttbe@kernel.org; a=openpgp; fpr=E8CB85F76877057A6E27F77AF6B7824F4269A073 Using the format specifier +%s%3N with GNU date is honoured, and only prints 3 digits of the nanoseconds portion of the seconds since epoch, which corresponds to the milliseconds. The uutils implementation of date currently does not honour this, and always prints all 9 digits. This is a known issue [1], but can be worked around by adapting this test to use nanoseconds instead of microseconds, and then divide it by 1e6. This fix is similar to what has been done on systemd side [2], and it is needed to run the selftests on Ubuntu 26.04, containing uutils 0.8.0. Note that the Fixes tag is there even if this patch doesn't fix an issue in the kernel selftests, but it is useful for those using uutils 0.8.0. Fixes: 048d19d444be ("mptcp: add basic kselftest for mptcp") Cc: stable@vger.kernel.org Link: https://github.com/uutils/coreutils/issues/11658 [1] Link: https://github.com/systemd/systemd/pull/41627 [2] Signed-off-by: Matthieu Baerts (NGI0) --- To: Shuah Khan Cc: linux-kselftest@vger.kernel.org --- tools/testing/selftests/net/mptcp/mptcp_connect.sh | 6 +++--- tools/testing/selftests/net/mptcp/mptcp_lib.sh | 10 +++++----- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/tools/testing/selftests/net/mptcp/mptcp_connect.sh b/tools/tes= ting/selftests/net/mptcp/mptcp_connect.sh index a6447f7a31fe..d158678fa6ab 100755 --- a/tools/testing/selftests/net/mptcp/mptcp_connect.sh +++ b/tools/testing/selftests/net/mptcp/mptcp_connect.sh @@ -401,7 +401,7 @@ do_transfer() mptcp_lib_wait_local_port_listen "${listener_ns}" "${port}" =20 local start - start=3D$(date +%s%3N) + start=3D$(date +%s%N) ip netns exec ${connector_ns} \ ./mptcp_connect -t ${timeout_poll} -p $port -s ${cl_proto} \ $extra_args $connect_addr < "$cin" > "$cout" & @@ -423,7 +423,7 @@ do_transfer() fi =20 local stop - stop=3D$(date +%s%3N) + stop=3D$(date +%s%N) =20 if $capture; then sleep 1 @@ -439,7 +439,7 @@ do_transfer() fi =20 local duration - duration=3D$((stop-start)) + duration=3D$(((stop-start) / 1000000)) printf "(duration %05sms) " "${duration}" if [ ${rets} -ne 0 ] || [ ${retc} -ne 0 ] || [ ${timeout_pid} -ne 0 ]; th= en mptcp_lib_pr_fail "client exit code $retc, server $rets" diff --git a/tools/testing/selftests/net/mptcp/mptcp_lib.sh b/tools/testing= /selftests/net/mptcp/mptcp_lib.sh index 989a5975dcea..5ef6033775c8 100644 --- a/tools/testing/selftests/net/mptcp/mptcp_lib.sh +++ b/tools/testing/selftests/net/mptcp/mptcp_lib.sh @@ -28,7 +28,7 @@ declare -rx MPTCP_LIB_AF_INET6=3D10 MPTCP_LIB_SUBTESTS=3D() MPTCP_LIB_SUBTESTS_DUPLICATED=3D0 MPTCP_LIB_SUBTEST_FLAKY=3D0 -MPTCP_LIB_SUBTESTS_LAST_TS_MS=3D +MPTCP_LIB_SUBTESTS_LAST_TS_NS=3D MPTCP_LIB_TEST_COUNTER=3D0 MPTCP_LIB_TEST_FORMAT=3D"%02u %-50s" MPTCP_LIB_IP_MPTCP=3D0 @@ -236,7 +236,7 @@ mptcp_lib_kversion_ge() { } =20 mptcp_lib_subtests_last_ts_reset() { - MPTCP_LIB_SUBTESTS_LAST_TS_MS=3D"$(date +%s%3N)" + MPTCP_LIB_SUBTESTS_LAST_TS_NS=3D"$(date +%s%N)" } mptcp_lib_subtests_last_ts_reset =20 @@ -255,7 +255,7 @@ __mptcp_lib_result_check_duplicated() { __mptcp_lib_result_add() { local result=3D"${1}" local time=3D"time=3D" - local ts_prev_ms + local ts_prev_ns shift =20 local id=3D$((${#MPTCP_LIB_SUBTESTS[@]} + 1)) @@ -265,9 +265,9 @@ __mptcp_lib_result_add() { # not to add two '#' [[ "${*}" !=3D *"#"* ]] && time=3D"# ${time}" =20 - ts_prev_ms=3D"${MPTCP_LIB_SUBTESTS_LAST_TS_MS}" + ts_prev_ns=3D"${MPTCP_LIB_SUBTESTS_LAST_TS_NS}" mptcp_lib_subtests_last_ts_reset - time+=3D"$((MPTCP_LIB_SUBTESTS_LAST_TS_MS - ts_prev_ms))ms" + time+=3D"$(((MPTCP_LIB_SUBTESTS_LAST_TS_NS - ts_prev_ns) / 1000000))ms" =20 MPTCP_LIB_SUBTESTS+=3D("${result} ${id} - ${KSFT_TEST}: ${*} ${time}") } --=20 2.53.0