From nobody Sat Aug 15 20:33:36 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-alma10-1.taild15c8.ts.net [100.103.45.18]) (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 0FCC046E01C; Wed, 12 Aug 2026 14:56:01 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=100.103.45.18 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786546568; cv=none; b=AWx7jBXwmkqGmHAVwk1H2tibNLOHRumzBylLpi3p0MH4HUbMgAMFvomadxEXLtMTNmgOw0afUvs81k+Von4zBLOt/gsf+4+w9slxHV5ExlAchUPmHPZGur8Cop44G67V+xW5w5RgvHDBJ9OqpcXz6941SGhiY1o2//BF7i7Kruw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786546568; c=relaxed/simple; bh=XwU0bkqFK5u0JeeJ9QM6jzdx9FHXDApFemobL+2NHNE=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Z1QcnX9WiaChW1wFMKkPMiDjpL1btyUEAIlWcYyd79Mb84JYiiVtODS8Odluup+EYwN/CekSqhrLaMQ1GGKluDVK1KjAb5umK9sT4rII6xOtMRXTdHshRHuJT/uYv0haCM2AoDYdGS1TF34SLfewoqTN3YoHllfi4InekBickcg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=nf4PkM9j; arc=none smtp.client-ip=100.103.45.18 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="nf4PkM9j" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 110D51F00A3E; Wed, 12 Aug 2026 14:55:57 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1786546560; bh=WXZl5udg7ZJph842UCypS8VHhdJZk88YovBys9phKz8=; h=From:Date:Subject:References:In-Reply-To:To:Cc; b=nf4PkM9jHkD9ExE872jRVQkceON+pZYOx9IJDLu119Iybwt4DFe4MXulseLJZZix0 SKsdP29LV7ty5z4KVlcSb8wL1yKL6mBvUIa5ihcHDggSuph0ZrH7ACBB/WjRZdPbiq O0BzUe/OOiieGqe8Yd+ERTAfzi7stpg4YmCr51ckhv5J56fgZwt9jXq36cL11X1BVk TVNaDCPw8Dlkqh1gy9o+x0uNX5z0SBoExkv7mjr8XOdkJpwhon0thK/m4trtI40Af+ 1OFiiM86RbJAV1JyUufYwJWiqpuH7r2ec+Yo7nD3CwZhrIgqNPc4vpw3P/Oam5mjCJ /1jiEXto6j0Bw== From: "Matthieu Baerts (NGI0)" Date: Wed, 12 Aug 2026 16:55:36 +0200 Subject: [PATCH net-next 01/11] mptcp: pm: add WARN_ON_ONCE guards on extra_subflows underflow 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: <20260812-net-next-mptcp-misc-feat-7-3-v1-1-1905a818f6cb@kernel.org> References: <20260812-net-next-mptcp-misc-feat-7-3-v1-0-1905a818f6cb@kernel.org> In-Reply-To: <20260812-net-next-mptcp-misc-feat-7-3-v1-0-1905a818f6cb@kernel.org> To: Mat Martineau , Geliang Tang , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman Cc: netdev@vger.kernel.org, mptcp@lists.linux.dev, linux-kernel@vger.kernel.org, "Matthieu Baerts (NGI0)" , Tao Cui X-Mailer: b4 0.16.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=1686; i=matttbe@kernel.org; h=from:subject:message-id; bh=7Sm0kvtxa0BRbbyBX9OkWC3GS3dAAOG3vCPCiXLOlWA=; b=owGbwMvMwCVWo/Th0Gd3rumMp9WSGLJqOovdEq95iMwt77dc6ss6s/5E2JU51aUzth9wOH7lq XfKsRspHaUsDGJcDLJiiizSbZH5M59X8ZZ4+VnAzGFlAhnCwMUpABOROsLI8O2u8rlf36YqVR1h vMO39fO8dnXu3pkF/96oxehHLrJm+8/wP0731q1i669lnea+PFqr7Q6o+V3v3/flrJlRebnZeq5 YDgA= X-Developer-Key: i=matttbe@kernel.org; a=openpgp; fpr=E8CB85F76877057A6E27F77AF6B7824F4269A073 From: Tao Cui extra_subflows is a u8 counter that can underflow if a decrement races with or precedes an increment. While the recently fixed userspace PM subflow creation path eliminated the primary cause, add defensive WARN_ON_ONCE guards at both decrement sites to catch any remaining edge cases rather than silently wrapping to 255. Signed-off-by: Tao Cui Reviewed-by: Matthieu Baerts (NGI0) Signed-off-by: Matthieu Baerts (NGI0) --- net/mptcp/pm.c | 3 ++- net/mptcp/protocol.h | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/net/mptcp/pm.c b/net/mptcp/pm.c index d1f73c3e39fa..8b68868255c5 100644 --- a/net/mptcp/pm.c +++ b/net/mptcp/pm.c @@ -670,7 +670,8 @@ void mptcp_pm_subflow_check_next(struct mptcp_sock *msk, if (mptcp_pm_is_userspace(msk)) { if (update_subflows) { spin_lock_bh(&pm->lock); - pm->extra_subflows--; + if (!WARN_ON_ONCE(pm->extra_subflows =3D=3D 0)) + pm->extra_subflows--; spin_unlock_bh(&pm->lock); } return; diff --git a/net/mptcp/protocol.h b/net/mptcp/protocol.h index b3af3462bdd1..20627e12c113 100644 --- a/net/mptcp/protocol.h +++ b/net/mptcp/protocol.h @@ -1254,7 +1254,8 @@ u8 mptcp_pm_get_limit_extra_subflows(const struct mpt= cp_sock *msk); /* called under PM lock */ static inline void __mptcp_pm_close_subflow(struct mptcp_sock *msk) { - if (--msk->pm.extra_subflows < mptcp_pm_get_limit_extra_subflows(msk)) + if (!WARN_ON_ONCE(msk->pm.extra_subflows =3D=3D 0) && + --msk->pm.extra_subflows < mptcp_pm_get_limit_extra_subflows(msk)) WRITE_ONCE(msk->pm.accept_subflow, true); } =20 --=20 2.53.0 From nobody Sat Aug 15 20:33:36 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-alma10-1.taild15c8.ts.net [100.103.45.18]) (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 022BA46EC69; Wed, 12 Aug 2026 14:56:06 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=100.103.45.18 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786546575; cv=none; b=llI1WSe7H+7/+KVO8xcpJz3eUb/W3VPZ2Z5s9bLE2XU1DnfgTKv8QffM6NKzhwAicY1VcJc+Ont1lQx639iTxuTHAxuQHff+7+QdKk30PLhEvukAO8831omNPLwSKcGoLyhWtOL/AeP+SsW7FfmxGMqvyEZZmmHLkLJQOG+MPqw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786546575; c=relaxed/simple; bh=2QzIb/jNE1OcHLnHPrfA7nX9AqIAo1yYkGQwq3UFsGw=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=iuJ1nC91ouaojpuYF4yn02Nn5NlETovDgcwfnPKTA0fTFonq36RTu46i2xfOW4WVfSzdRjxplT2zs/2sY4BgPu9Us5bfPX02dmN9QVSbnRe86+usJ7NO1Iwz66BKBKLzD6tolIk7DD8WMfogg0LLBCJIirXTVupNXmzEIcFIzZc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=dcF2Ntme; arc=none smtp.client-ip=100.103.45.18 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="dcF2Ntme" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 688EC1F00ADB; Wed, 12 Aug 2026 14:56:00 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1786546562; bh=qLUPtfFf9FhflLXSbkntjMYPfWGrc/D4NeOfLtwZGug=; h=From:Date:Subject:References:In-Reply-To:To:Cc; b=dcF2Ntmel4kXMZdYiAKCeCcveNaojBLGqs+0ejME4vXB2rVSXG9vmfmw04sLsBKpv dMbdTOWIIVjrgAdc2Tms2FMD+lBFeEJv5C82y8ihri7kvwzrhGGccnMhH6AHi/7Vf/ CwPuThUUhTm7zhQgluWexA193uec/4RGf9UZv+osFMECN8bFg8wXlKb7LIe2hV86f0 wzi1kKduR0FAVOxwuZfcQWckjltXMwrY65SC1uyGiLM6lWcEabHuTZgaQm8fqBhvwd e2sOzJkKub2BmPLW9fpN5h4zrVEe0jaX/rzbcmUTYQ+ubLbeguEZMzDDd+pD9ZuUPr td8hdHsAreIlg== From: "Matthieu Baerts (NGI0)" Date: Wed, 12 Aug 2026 16:55:37 +0200 Subject: [PATCH net-next 02/11] mptcp: remove unused data_ack from struct mptcp_ext 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: <20260812-net-next-mptcp-misc-feat-7-3-v1-2-1905a818f6cb@kernel.org> References: <20260812-net-next-mptcp-misc-feat-7-3-v1-0-1905a818f6cb@kernel.org> In-Reply-To: <20260812-net-next-mptcp-misc-feat-7-3-v1-0-1905a818f6cb@kernel.org> To: Mat Martineau , Geliang Tang , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman Cc: netdev@vger.kernel.org, mptcp@lists.linux.dev, linux-kernel@vger.kernel.org, "Matthieu Baerts (NGI0)" , Steven Rostedt , Masami Hiramatsu , Mathieu Desnoyers , linux-trace-kernel@vger.kernel.org, Geliang Tang X-Mailer: b4 0.16.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=2561; i=matttbe@kernel.org; h=from:subject:message-id; bh=RWzRcFuSIbEV/td2eQo1OegNXZesOq80bWBdbOKhYO0=; b=owGbwMvMwCVWo/Th0Gd3rumMp9WSGLJqOov3Mpj1NBjUSfnKruS1naLm/v7QtanrPt34NiFth ZTYVE3njlIWBjEuBlkxRRbptsj8mc+reEu8/Cxg5rAygQxh4OIUgInwtTD8U3/M1xHT3HXvu6PS h8vTbtbO9Xhy1I07a9l1s5frnU6aizD8s3kglflj3aHFS55v6GI2jEjfcv+TUExlrPS3yVc/3Jk uxAoA X-Developer-Key: i=matttbe@kernel.org; a=openpgp; fpr=E8CB85F76877057A6E27F77AF6B7824F4269A073 From: Geliang Tang The data_ack and data_ack32 fields in struct mptcp_ext are no longer used anywhere. Remove them from the structure and update mptcp_dump_mpext() trace helper accordingly. Drop the data_ack field from the trace entry and the corresponding output in TP_printk(). Signed-off-by: Geliang Tang Reviewed-by: Matthieu Baerts (NGI0) Signed-off-by: Matthieu Baerts (NGI0) --- To: Steven Rostedt To: Masami Hiramatsu To: Mathieu Desnoyers Cc: linux-trace-kernel@vger.kernel.org --- include/net/mptcp.h | 4 ---- include/trace/events/mptcp.h | 6 ++---- 2 files changed, 2 insertions(+), 8 deletions(-) diff --git a/include/net/mptcp.h b/include/net/mptcp.h index 71b9fc5a5796..485d55b66ea6 100644 --- a/include/net/mptcp.h +++ b/include/net/mptcp.h @@ -19,10 +19,6 @@ struct seq_file; =20 /* MPTCP sk_buff extension data */ struct mptcp_ext { - union { - u64 data_ack; - u32 data_ack32; - }; u64 data_seq; u32 subflow_seq; u16 data_len; diff --git a/include/trace/events/mptcp.h b/include/trace/events/mptcp.h index 04521acba483..22882bd03459 100644 --- a/include/trace/events/mptcp.h +++ b/include/trace/events/mptcp.h @@ -75,7 +75,6 @@ DECLARE_EVENT_CLASS(mptcp_dump_mpext, TP_ARGS(mpext), =20 TP_STRUCT__entry( - __field(u64, data_ack) __field(u64, data_seq) __field(u32, subflow_seq) __field(u16, data_len) @@ -94,7 +93,6 @@ DECLARE_EVENT_CLASS(mptcp_dump_mpext, ), =20 TP_fast_assign( - __entry->data_ack =3D mpext->ack64 ? mpext->data_ack : mpext->data_ack32; __entry->data_seq =3D mpext->data_seq; __entry->subflow_seq =3D mpext->subflow_seq; __entry->data_len =3D mpext->data_len; @@ -112,8 +110,8 @@ DECLARE_EVENT_CLASS(mptcp_dump_mpext, __entry->infinite_map =3D mpext->infinite_map; ), =20 - TP_printk("data_ack=3D%llu data_seq=3D%llu subflow_seq=3D%u data_len=3D%u= csum=3D%x use_map=3D%u dsn64=3D%u data_fin=3D%u use_ack=3D%u ack64=3D%u mp= c_map=3D%u frozen=3D%u reset_transient=3D%u reset_reason=3D%u csum_reqd=3D%= u infinite_map=3D%u", - __entry->data_ack, __entry->data_seq, + TP_printk("data_seq=3D%llu subflow_seq=3D%u data_len=3D%u csum=3D%x use_m= ap=3D%u dsn64=3D%u data_fin=3D%u use_ack=3D%u ack64=3D%u mpc_map=3D%u froze= n=3D%u reset_transient=3D%u reset_reason=3D%u csum_reqd=3D%u infinite_map= =3D%u", + __entry->data_seq, __entry->subflow_seq, __entry->data_len, __entry->csum, __entry->use_map, __entry->dsn64, __entry->data_fin, --=20 2.53.0 From nobody Sat Aug 15 20:33:36 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-alma10-1.taild15c8.ts.net [100.103.45.18]) (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 944A446AA8E; Wed, 12 Aug 2026 14:56:08 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=100.103.45.18 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786546573; cv=none; b=A7NUM8ZoQLTkJD2FJmF9r3H5YAERk4XuZQgGs8pX1F4OggTsHqTnFe/6WHlpmsdcuU4Rh7tJQIkZ3KZbHlPcP3u8gq3qLAso5f9OMaOLmTfhJLcPMWa5di5HKHP4uv38vsp+IBD6NNf6OFZ2qJ/dYRvan9qDSmMQG0EZ67J5oF4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786546573; c=relaxed/simple; bh=hIwnq+Z7LILmrxmKsmTq01ySBGJ3Uh/6E7+3MaTXdiM=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Vy5k6r49EfBI7IOtYIACn3OGOJSHIeJA6MQeVGWuT1DcphM8rF+Ivov5BTN28anR3JyeihK/nY66ZAdTRHOxVw+1BnPk4udqOFEp58AQW+HCe4nZ8FIhH5XlpUM6uvnCk0nBOxl+5Luhm1Xe32SbZZ5mPST6xHyUobCbawn45qk= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=S0DOJ1oC; arc=none smtp.client-ip=100.103.45.18 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="S0DOJ1oC" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 3CAA11F00A3D; Wed, 12 Aug 2026 14:56:03 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1786546565; bh=SfJPkh6wWzKGhN4UjY4T+OCGz7au4PBOlmqjBLgCZ+Q=; h=From:Date:Subject:References:In-Reply-To:To:Cc; b=S0DOJ1oC3E2Swxn3BewO2MdGtxKkMWew9sZmq3fpUy0mYSS3vrVmMrSOkMmYYFgOS phYoRPJeAYzmLYq9SrctmJ+Zt+tK1xkS6PB/TSNfYba8ywkJ+XAIbQkcnTvPwwo/Sf TYgU8j/Cequp7On/zzULG+QKNbG7NTGLKQSUFkODomDrdgdSQAnIzoYvchPDjTHIRI NbAs9LjguXBv6qmOoEXRzfcP55M+xDL7ik/+qbNzXgGRNLhHri67yGFjpQLxogyfDn wZEMsVEDLHgB3j7aAL0R91o4G70uBmdD0dfi71LOx6oCc6A5PM7OCLeperpgQDobW5 skwxX8mKmKo5Q== From: "Matthieu Baerts (NGI0)" Date: Wed, 12 Aug 2026 16:55:38 +0200 Subject: [PATCH net-next 03/11] mptcp: pm: userspace: make remove_addr_entry static 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: <20260812-net-next-mptcp-misc-feat-7-3-v1-3-1905a818f6cb@kernel.org> References: <20260812-net-next-mptcp-misc-feat-7-3-v1-0-1905a818f6cb@kernel.org> In-Reply-To: <20260812-net-next-mptcp-misc-feat-7-3-v1-0-1905a818f6cb@kernel.org> To: Mat Martineau , Geliang Tang , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman Cc: netdev@vger.kernel.org, mptcp@lists.linux.dev, linux-kernel@vger.kernel.org, "Matthieu Baerts (NGI0)" X-Mailer: b4 0.16.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=1890; i=matttbe@kernel.org; h=from:subject:message-id; bh=hIwnq+Z7LILmrxmKsmTq01ySBGJ3Uh/6E7+3MaTXdiM=; b=owGbwMvMwCVWo/Th0Gd3rumMp9WSGLJqOku4Q6WtM/i7NbLMmbfckWW5eNnGMniiR1b6AzYl0 7j+r/M7SlkYxLgYZMUUWaTbIvNnPq/iLfHys4CZw8oEMoSBi1MAJnJoOyPDRodZ/f21F6dtWbZW vaTByqHD7e8a92uJ6ifKXvI37N21hOF/znS/LUU5DYej71vV3VXmP33sJGPw82PR80SDkq5kziz mAwA= X-Developer-Key: i=matttbe@kernel.org; a=openpgp; fpr=E8CB85F76877057A6E27F77AF6B7824F4269A073 Only used in pm_userspace.c. While at it, use the mptcp_userspace_pm_ prefix, like most functions in this file: that makes it clear it is specific to this userspace PM. Reviewed-by: Geliang Tang Signed-off-by: Matthieu Baerts (NGI0) --- net/mptcp/pm_userspace.c | 7 ++++--- net/mptcp/protocol.h | 2 -- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/net/mptcp/pm_userspace.c b/net/mptcp/pm_userspace.c index 2203cc2d2748..b94fbb483bf9 100644 --- a/net/mptcp/pm_userspace.c +++ b/net/mptcp/pm_userspace.c @@ -281,8 +281,9 @@ static int mptcp_userspace_pm_remove_id_zero_address(st= ruct mptcp_sock *msk) return err; } =20 -void mptcp_pm_remove_addr_entry(struct mptcp_sock *msk, - struct mptcp_pm_addr_entry *entry) +static void +mptcp_userspace_pm_remove_addr_entry(struct mptcp_sock *msk, + struct mptcp_pm_addr_entry *entry) { struct mptcp_rm_list alist =3D { .nr =3D 0 }; int anno_nr =3D 0; @@ -340,7 +341,7 @@ int mptcp_pm_nl_remove_doit(struct sk_buff *skb, struct= genl_info *info) list_del_rcu(&match->list); spin_unlock_bh(&msk->pm.lock); =20 - mptcp_pm_remove_addr_entry(msk, match); + mptcp_userspace_pm_remove_addr_entry(msk, match); =20 release_sock(sk); =20 diff --git a/net/mptcp/protocol.h b/net/mptcp/protocol.h index 20627e12c113..06a107d4e839 100644 --- a/net/mptcp/protocol.h +++ b/net/mptcp/protocol.h @@ -1149,8 +1149,6 @@ int mptcp_pm_announce_addr(struct mptcp_sock *msk, const struct mptcp_addr_info *addr, bool echo); int mptcp_pm_remove_addr(struct mptcp_sock *msk, const struct mptcp_rm_lis= t *rm_list); -void mptcp_pm_remove_addr_entry(struct mptcp_sock *msk, - struct mptcp_pm_addr_entry *entry); =20 /* the default path manager, used in mptcp_pm_unregister */ extern struct mptcp_pm_ops mptcp_pm_kernel; --=20 2.53.0 From nobody Sat Aug 15 20:33:36 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-alma10-1.taild15c8.ts.net [100.103.45.18]) (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 978B8468C22; Wed, 12 Aug 2026 14:56:11 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=100.103.45.18 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786546578; cv=none; b=UNZQJzdTDWaPTz1sPhdkf9vI1yX9EYdNNtNxwX+d2zHBJZdEndqikq+HKikboq1xwKMcee5sG2IsRwNN9H39IquHHY3SadXx4iREPR7y+HroTuGoHrQdVqRZ3xFX4iVtV71u4uB0/2rN9yl/wPYD9Q2YzdJKpHRmYGeQ7i6iGIw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786546578; c=relaxed/simple; bh=1isvdAJraf3vPmJlBFNMJRSfcEoMPYoKAsSef2MxevY=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=k8k8BVgtDZLf+OWkpcdBtx7rwyGkaA5hmUpw2HtlqH90lrgbWumNyo7u22g/THeDXQ1ev55M+pdsmN/SY8k847OBx1PkCBtfsTzt0QIgCyjfwxbJh8zbApsVR3gY4cg+ryKLS/dSPUN9TlGV+WD3baPAJV9zSMNOwME1zRtTBCw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=T07DeVzL; arc=none smtp.client-ip=100.103.45.18 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="T07DeVzL" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 71A1F1F00AC4; Wed, 12 Aug 2026 14:56:05 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1786546567; bh=N7N7M4T1qNAFQiNc7NOoy3Cg9WmfPmpVq/vTG0+7lE8=; h=From:Date:Subject:References:In-Reply-To:To:Cc; b=T07DeVzL1cudML35F08jZuENeALvsrjldXyh1qWWMT7QsdYMduI0rdvPVOWNi3pTH 6PDRo0z5Pd0zNGbCavFWnjFM0358nJ0663poFFEH9h6s5Hy5ISW9jLGERizriAjhxh e5PVJVeI1Pj4U1X/qzkGjlcDJp76kqm2grJyiAHFvIjK/ZbssTO9d1/jKDDE9jXaF8 Bhap5xa2FCrQA6XUPCkKGN/B9O3KLs2PCtz2wNbWvi8cwUcUZOzJj1dXx18wudaaRJ vPp+Y3Wsbud7dNigmrCRdD/Yg25mYe3JZv7cT6zd0x8u0DZmXKo/GKdr0i+qgd3siL 1lj5EfmBP14QQ== From: "Matthieu Baerts (NGI0)" Date: Wed, 12 Aug 2026 16:55:39 +0200 Subject: [PATCH net-next 04/11] mptcp: honour configured min/max RTO in retransmit paths 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: <20260812-net-next-mptcp-misc-feat-7-3-v1-4-1905a818f6cb@kernel.org> References: <20260812-net-next-mptcp-misc-feat-7-3-v1-0-1905a818f6cb@kernel.org> In-Reply-To: <20260812-net-next-mptcp-misc-feat-7-3-v1-0-1905a818f6cb@kernel.org> To: Mat Martineau , Geliang Tang , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman Cc: netdev@vger.kernel.org, mptcp@lists.linux.dev, linux-kernel@vger.kernel.org, "Matthieu Baerts (NGI0)" , Kalpan Jani X-Mailer: b4 0.16.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=3975; i=matttbe@kernel.org; h=from:subject:message-id; bh=b0s9mRuMHSIrzFAad1zYGyC0Q9A3Qoyr3eB8zA1JMwc=; b=owGbwMvMwCVWo/Th0Gd3rumMp9WSGLJqOkv/7ElwWeV+1Klx596s9Jq7pc2Li97YS/JMMvm2/ 8A6XuHijlIWBjEuBlkxRRbptsj8mc+reEu8/Cxg5rAygQxh4OIUgIlMOcrIcPzEd49p3KKVc/if aTEmTEm5l5UquvjxtR/JRfsV1z01CGf4K8txyeGE/FPDrc0VT2//2H7hhVYmU4yVhc28208v+E5 R4wUA X-Developer-Key: i=matttbe@kernel.org; a=openpgp; fpr=E8CB85F76877057A6E27F77AF6B7824F4269A073 From: Kalpan Jani The MPTCP-level retransmit timers (DATA_FIN retransmissions and the fallback timeout) used the hard-coded TCP_RTO_MIN / TCP_RTO_MAX constants, ignoring the tcp_rto_min_us and tcp_rto_max_ms sysctls. Make them follow the sysctls instead: seed icsk_rto_min / icsk_rto_max on the MPTCP socket from the per-netns sysctls in __mptcp_init_sock() -- the msk does not go through tcp_init_sock(), so these fields would otherwise stay zero -- and read them directly where the constants were used: - mptcp_set_datafin_timeout(): both the backoff cap computation and the resulting timer_ival. The two sysctls are validated independently, so rto_min > rto_max is a valid configuration; keep a max_t() guard so ilog2() is never called with 0. - __mptcp_set_timeout(): the fallback when no subflow timeout is available. The icsk fields are read directly instead of using the tcp_rto_min()/tcp_rto_max() helpers: the MPTCP socket does not perform routing lookups in these paths, so the rto_min route metric checked by tcp_rto_min() can never apply here. The TCP_RTO_MIN_US / TCP_RTO_MAX_MS socket options are not supported by MPTCP setsockopt() either; this can be revisited if they get supported on MPTCP sockets. The remaining uses of TCP_RTO_MAX in net/mptcp/ctrl.c (default add_addr_timeout) and net/mptcp/subflow.c (MP_FAIL timeout) are intentionally left unchanged: they use the constant as a default duration, not as an RTO bound on a retransmit timer. Closes: https://github.com/multipath-tcp/mptcp_net-next/issues/618 Signed-off-by: Kalpan Jani Reviewed-by: Matthieu Baerts (NGI0) Signed-off-by: Matthieu Baerts (NGI0) --- net/mptcp/protocol.c | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/net/mptcp/protocol.c b/net/mptcp/protocol.c index ec874d2ead6a..8f074d757743 100644 --- a/net/mptcp/protocol.c +++ b/net/mptcp/protocol.c @@ -581,17 +581,23 @@ static bool mptcp_pending_data_fin(struct sock *sk, u= 64 *seq) static void mptcp_set_datafin_timeout(struct sock *sk) { struct inet_connection_sock *icsk =3D inet_csk(sk); + u32 rto_min =3D READ_ONCE(icsk->icsk_rto_min); + u32 rto_max =3D READ_ONCE(icsk->icsk_rto_max); u32 retransmits; =20 + /* The sysctls are validated independently: rto_min > rto_max is + * possible, guard against ilog2(0). + */ retransmits =3D min_t(u32, icsk->icsk_retransmits, - ilog2(TCP_RTO_MAX / TCP_RTO_MIN)); + ilog2(max_t(u32, rto_max / rto_min, 1))); =20 - mptcp_sk(sk)->timer_ival =3D TCP_RTO_MIN << retransmits; + mptcp_sk(sk)->timer_ival =3D rto_min << retransmits; } =20 static void __mptcp_set_timeout(struct sock *sk, long tout) { - mptcp_sk(sk)->timer_ival =3D tout > 0 ? tout : TCP_RTO_MIN; + mptcp_sk(sk)->timer_ival =3D tout > 0 ? tout : + READ_ONCE(inet_csk(sk)->icsk_rto_min); } =20 static long mptcp_timeout_from_subflow(const struct mptcp_subflow_context = *subflow) @@ -3161,7 +3167,9 @@ static void mptcp_worker(struct work_struct *work) =20 static void __mptcp_init_sock(struct sock *sk) { + struct inet_connection_sock *icsk =3D inet_csk(sk); struct mptcp_sock *msk =3D mptcp_sk(sk); + struct net *net =3D sock_net(sk); =20 INIT_LIST_HEAD(&msk->conn_list); INIT_LIST_HEAD(&msk->join_list); @@ -3170,7 +3178,13 @@ static void __mptcp_init_sock(struct sock *sk) INIT_WORK(&msk->work, mptcp_worker); msk->out_of_order_queue =3D RB_ROOT; msk->first_pending =3D NULL; - msk->timer_ival =3D TCP_RTO_MIN; + + /* msk does not go through tcp_init_sock(); seed RTO bounds. */ + icsk->icsk_rto_min =3D + usecs_to_jiffies(READ_ONCE(net->ipv4.sysctl_tcp_rto_min_us)); + icsk->icsk_rto_max =3D + msecs_to_jiffies(READ_ONCE(net->ipv4.sysctl_tcp_rto_max_ms)); + msk->timer_ival =3D icsk->icsk_rto_min; msk->scaling_ratio =3D TCP_DEFAULT_SCALING_RATIO; msk->backlog_len =3D 0; mptcp_init_rtt_est(msk); --=20 2.53.0 From nobody Sat Aug 15 20:33:36 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-alma10-1.taild15c8.ts.net [100.103.45.18]) (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 0BC4346F497; Wed, 12 Aug 2026 14:56:13 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=100.103.45.18 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786546584; cv=none; b=r3aIIjDRAvqomk7FL8MLrnVTjDOndfmMqS1pk3A0WSlfUrdMT55V23Ts1Z6Kl/HqepPLWCUSIxdktfxAhjwHYTw5hYf84NhsvXnTGnwQGxeNf7cDB4E+P6l7yeEYGDkDD+LvZnRJSM+l49s2Qt7IkI29tWq0dj0aIjuJwlnP/Nk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786546584; c=relaxed/simple; bh=4kSczDUhvB9wLi/CRABdJe2PoFsIOzsbTEk5ItzPShc=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=FWfUNC3OZ4U5NDkcUstnsj/ywzMowiyLtuZzy7hAbmMuCrsf7sP0GZ+K2oqFPEaipFzqa02/BgK/HM70s2n92SvH9exVZX58zyLIEAATBJVxm6euIO/34QjatJeovgJrBKP72q7ug/3RQXXm61Xue7UkpFveVDvkxKnceAFiwB0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=W6rkKXv4; arc=none smtp.client-ip=100.103.45.18 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="W6rkKXv4" Received: by smtp.kernel.org (Postfix) with ESMTPSA id C756B1F00ADF; Wed, 12 Aug 2026 14:56:07 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1786546569; bh=lMyDW4Svbsmjj2oiSKAYU2dmKW+H0HSJMp0JMFoBmmQ=; h=From:Date:Subject:References:In-Reply-To:To:Cc; b=W6rkKXv4Jqt2WC9rhNiuyFTszCyQ+NU/CUri4bfVD74l8RW/TytI+4MPgefqCCnYK /KBv+B2+gDIuLLD1mj46SS02Sf55V4ZdXXq8EgXRPbCR3d4nX1mZeziZrqM5KXlf7C f4ZZGEvTjza5TjNtXcmJ2hinmldjQeV9vrd5OyHPEOoY3Z9yo236IeCjFVMKhk+L9L 0rI26WUxq7WLJAVqbgPKBOn2Slzr7xdcNZsCjnDAkcWST2rNh99LZsZeQXbI+y0pQJ xW1wGI7y9DYOXOJy71rOakneZxcBqpSdQihlOIbusL0zmIvr8RT/TvCz/EDQECMbCg RsZPA1TevUcRw== From: "Matthieu Baerts (NGI0)" Date: Wed, 12 Aug 2026 16:55:40 +0200 Subject: [PATCH net-next 05/11] mptcp: add per-event MIB counters for MPTCP_RST_EMPTCP resets 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: <20260812-net-next-mptcp-misc-feat-7-3-v1-5-1905a818f6cb@kernel.org> References: <20260812-net-next-mptcp-misc-feat-7-3-v1-0-1905a818f6cb@kernel.org> In-Reply-To: <20260812-net-next-mptcp-misc-feat-7-3-v1-0-1905a818f6cb@kernel.org> To: Mat Martineau , Geliang Tang , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman Cc: netdev@vger.kernel.org, mptcp@lists.linux.dev, linux-kernel@vger.kernel.org, "Matthieu Baerts (NGI0)" , Shardul Bankar X-Mailer: b4 0.16.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=8430; i=matttbe@kernel.org; h=from:subject:message-id; bh=oYBRE8x4vk82CdDziw0Cszl4jI9sHyflRIR5mdcApcU=; b=owGbwMvMwCVWo/Th0Gd3rumMp9WSGLJqOkv3prCqfgt25uvPFv8ufEQ37P28i/cfHTrz7A9nV tfmX7/FOkpZGMS4GGTFFFmk2yLzZz6v4i3x8rOAmcPKBDKEgYtTACZyV4fhn5Xiu8Nd9x7ZnEqf vv2QOE/Fa56Lj/euOnc25831mDAF6xSGP7z7ZmtUMKxU2RZvtOnlxqe3Sy/1s/tzchu43uRoilr myQ4A X-Developer-Key: i=matttbe@kernel.org; a=openpgp; fpr=E8CB85F76877057A6E27F77AF6B7824F4269A073 From: Shardul Bankar MPTCP_RST_EMPTCP (reset reason 1) is used as a catch-all for several distinct error conditions across subflow setup, authentication, and data-path validation. The existing MPRstTx/MPRstRx counters only track aggregate reset volume, making it difficult to diagnose which code path is triggering subflow resets in production. Add per-event MIB counters covering each MPTCP_RST_EMPTCP use site that is not already covered by an existing counter, named after the underlying event or condition rather than the reset action: MD5SigReset MD5SIG enabled on listener (incompatible) MPJoinSynAckNoMPJoin SYN/ACK missing MP_JOIN option MPJoinAckNoMPJoin server-side ACK missing MP_JOIN option (fallback path, MPJoin required) MPJoinAckNoCtx server-side ACK with no subflow context MPJoinNoIdFound MP_JOIN with a valid token but no PM local ID DssReset data mapping invalid (also fires on MAPPING_NODSS / EMIDDLEBOX path) MPJoinNotEstablished JOIN attempted on a not-fully-established msk MPJoinNoIdFound covers the second half of the no-msk MP_JOIN reset: the existing MPJoinNoTokenFound (MPTCP_MIB_JOINNOTOKEN) only counts the missing-token case in subflow_token_join_request(), while a JOIN that carries a valid token but for which the path manager returns no local id reaches the same MPTCP_RST_EMPTCP in subflow_check_req() uncounted. The aggregate MPRstTx/MPRstRx counters are unchanged. Closes: https://github.com/multipath-tcp/mptcp_net-next/issues/511 Signed-off-by: Shardul Bankar Reviewed-by: Matthieu Baerts (NGI0) Signed-off-by: Matthieu Baerts (NGI0) --- net/mptcp/mib.c | 7 +++++++ net/mptcp/mib.h | 7 +++++++ net/mptcp/protocol.c | 1 + net/mptcp/subflow.c | 10 ++++++++++ 4 files changed, 25 insertions(+) diff --git a/net/mptcp/mib.c b/net/mptcp/mib.c index 2569385bab7c..608cb568897c 100644 --- a/net/mptcp/mib.c +++ b/net/mptcp/mib.c @@ -21,14 +21,19 @@ static const struct snmp_mib mptcp_snmp_list[] =3D { SNMP_MIB_ITEM("MPFallbackTokenInit", MPTCP_MIB_TOKENFALLBACKINIT), SNMP_MIB_ITEM("MPTCPRetrans", MPTCP_MIB_RETRANSSEGS), SNMP_MIB_ITEM("MPJoinNoTokenFound", MPTCP_MIB_JOINNOTOKEN), + SNMP_MIB_ITEM("MPJoinNoIdFound", MPTCP_MIB_MPJOINNOIDFOUND), SNMP_MIB_ITEM("MPJoinSynRx", MPTCP_MIB_JOINSYNRX), SNMP_MIB_ITEM("MPJoinSynBackupRx", MPTCP_MIB_JOINSYNBACKUPRX), SNMP_MIB_ITEM("MPJoinSynAckRx", MPTCP_MIB_JOINSYNACKRX), SNMP_MIB_ITEM("MPJoinSynAckBackupRx", MPTCP_MIB_JOINSYNACKBACKUPRX), SNMP_MIB_ITEM("MPJoinSynAckHMacFailure", MPTCP_MIB_JOINSYNACKMAC), + SNMP_MIB_ITEM("MPJoinSynAckNoMPJoin", MPTCP_MIB_MPJOINSYNACKNOMPJOIN), SNMP_MIB_ITEM("MPJoinAckRx", MPTCP_MIB_JOINACKRX), SNMP_MIB_ITEM("MPJoinAckHMacFailure", MPTCP_MIB_JOINACKMAC), + SNMP_MIB_ITEM("MPJoinAckNoMPJoin", MPTCP_MIB_MPJOINACKNOMPJOIN), + SNMP_MIB_ITEM("MPJoinAckNoCtx", MPTCP_MIB_MPJOINACKNOCTX), SNMP_MIB_ITEM("MPJoinRejected", MPTCP_MIB_JOINREJECTED), + SNMP_MIB_ITEM("MPJoinNotEstablished", MPTCP_MIB_MPJOINNOTESTABLISHED), SNMP_MIB_ITEM("MPJoinSynTx", MPTCP_MIB_JOINSYNTX), SNMP_MIB_ITEM("MPJoinSynTxCreatSkErr", MPTCP_MIB_JOINSYNTXCREATSKERR), SNMP_MIB_ITEM("MPJoinSynTxBindErr", MPTCP_MIB_JOINSYNTXBINDERR), @@ -81,7 +86,9 @@ static const struct snmp_mib mptcp_snmp_list[] =3D { SNMP_MIB_ITEM("Blackhole", MPTCP_MIB_BLACKHOLE), SNMP_MIB_ITEM("MPCapableDataFallback", MPTCP_MIB_MPCAPABLEDATAFALLBACK), SNMP_MIB_ITEM("MD5SigFallback", MPTCP_MIB_MD5SIGFALLBACK), + SNMP_MIB_ITEM("MD5SigReset", MPTCP_MIB_MD5SIGRESET), SNMP_MIB_ITEM("DssFallback", MPTCP_MIB_DSSFALLBACK), + SNMP_MIB_ITEM("DssReset", MPTCP_MIB_DSSRESET), SNMP_MIB_ITEM("SimultConnectFallback", MPTCP_MIB_SIMULTCONNFALLBACK), SNMP_MIB_ITEM("FallbackFailed", MPTCP_MIB_FALLBACKFAILED), SNMP_MIB_ITEM("WinProbe", MPTCP_MIB_WINPROBE), diff --git a/net/mptcp/mib.h b/net/mptcp/mib.h index 3a3425e258a7..1ebdb55e9534 100644 --- a/net/mptcp/mib.h +++ b/net/mptcp/mib.h @@ -16,14 +16,19 @@ enum linux_mptcp_mib_field { MPTCP_MIB_TOKENFALLBACKINIT, /* Could not init/allocate token */ MPTCP_MIB_RETRANSSEGS, /* Segments retransmitted at the MPTCP-level */ MPTCP_MIB_JOINNOTOKEN, /* Received MP_JOIN but the token was not found */ + MPTCP_MIB_MPJOINNOIDFOUND, /* Received MP_JOIN but no local ID was found = */ MPTCP_MIB_JOINSYNRX, /* Received a SYN + MP_JOIN */ MPTCP_MIB_JOINSYNBACKUPRX, /* Received a SYN + MP_JOIN + backup flag */ MPTCP_MIB_JOINSYNACKRX, /* Received a SYN/ACK + MP_JOIN */ MPTCP_MIB_JOINSYNACKBACKUPRX, /* Received a SYN/ACK + MP_JOIN + backup fl= ag */ MPTCP_MIB_JOINSYNACKMAC, /* HMAC was wrong on SYN/ACK + MP_JOIN */ + MPTCP_MIB_MPJOINSYNACKNOMPJOIN, /* MP_RST: missing MP_JOIN in SYN/ACK */ MPTCP_MIB_JOINACKRX, /* Received an ACK + MP_JOIN */ MPTCP_MIB_JOINACKMAC, /* HMAC was wrong on ACK + MP_JOIN */ + MPTCP_MIB_MPJOINACKNOMPJOIN, /* MP_RST: missing MP_JOIN in ACK */ + MPTCP_MIB_MPJOINACKNOCTX, /* MP_RST: no subflow context on ACK */ MPTCP_MIB_JOINREJECTED, /* The PM rejected the JOIN request */ + MPTCP_MIB_MPJOINNOTESTABLISHED, /* MP_RST: JOIN on not-fully-established = msk */ MPTCP_MIB_JOINSYNTX, /* Sending a SYN + MP_JOIN */ MPTCP_MIB_JOINSYNTXCREATSKERR, /* Not able to create a socket when sendin= g a SYN + MP_JOIN */ MPTCP_MIB_JOINSYNTXBINDERR, /* Not able to bind() the address when sendin= g a SYN + MP_JOIN */ @@ -84,7 +89,9 @@ enum linux_mptcp_mib_field { * established packet */ MPTCP_MIB_MD5SIGFALLBACK, /* Conflicting TCP option enabled */ + MPTCP_MIB_MD5SIGRESET, /* MP_RST: MD5SIG enabled on listener */ MPTCP_MIB_DSSFALLBACK, /* Bad or missing DSS */ + MPTCP_MIB_DSSRESET, /* MP_RST: bad data mapping */ MPTCP_MIB_SIMULTCONNFALLBACK, /* Simultaneous connect */ MPTCP_MIB_FALLBACKFAILED, /* Can't fallback due to msk status */ MPTCP_MIB_WINPROBE, /* MPTCP-level zero window probe */ diff --git a/net/mptcp/protocol.c b/net/mptcp/protocol.c index 8f074d757743..b474d03620a7 100644 --- a/net/mptcp/protocol.c +++ b/net/mptcp/protocol.c @@ -4002,6 +4002,7 @@ bool mptcp_finish_join(struct sock *ssk) =20 /* mptcp socket already closing? */ if (!mptcp_is_fully_established(parent)) { + MPTCP_INC_STATS(sock_net(parent), MPTCP_MIB_MPJOINNOTESTABLISHED); subflow->reset_reason =3D MPTCP_RST_EMPTCP; return false; } diff --git a/net/mptcp/subflow.c b/net/mptcp/subflow.c index e1f20ff8fdb4..af81ad5e699d 100644 --- a/net/mptcp/subflow.c +++ b/net/mptcp/subflow.c @@ -96,6 +96,7 @@ static struct mptcp_sock *subflow_token_join_request(stru= ct request_sock *req) =20 local_id =3D mptcp_pm_get_local_id(msk, (struct sock_common *)req); if (local_id < 0) { + SUBFLOW_REQ_INC_STATS(req, MPTCP_MIB_MPJOINNOIDFOUND); sock_put((struct sock *)msk); return NULL; } @@ -160,6 +161,7 @@ static int subflow_check_req(struct request_sock *req, * TCP option space. */ if (rcu_access_pointer(tcp_sk(sk_listener)->md5sig_info)) { + MPTCP_INC_STATS(sock_net(sk_listener), MPTCP_MIB_MD5SIGRESET); subflow_add_reset_reason(skb, MPTCP_RST_EMPTCP); return -EINVAL; } @@ -563,6 +565,7 @@ static void subflow_finish_connect(struct sock *sk, con= st struct sk_buff *skb) u8 hmac[SHA256_DIGEST_SIZE]; =20 if (!(mp_opt.suboptions & OPTION_MPTCP_MPJ_SYNACK)) { + MPTCP_INC_STATS(sock_net(sk), MPTCP_MIB_MPJOINSYNACKNOMPJOIN); subflow->reset_reason =3D MPTCP_RST_EMPTCP; goto do_reset; } @@ -865,6 +868,12 @@ static struct sock *subflow_syn_recv_sock(const struct= sock *sk, */ if (!ctx || fallback) { if (fallback_is_fatal) { + if (!ctx) + MPTCP_INC_STATS(sock_net(sk), + MPTCP_MIB_MPJOINACKNOCTX); + else + MPTCP_INC_STATS(sock_net(sk), + MPTCP_MIB_MPJOINACKNOMPJOIN); subflow_add_reset_reason(skb, MPTCP_RST_EMPTCP); goto dispose_child; } @@ -1416,6 +1425,7 @@ static bool subflow_check_data_avail(struct sock *ssk) * subflow_error_report() will introduce the appropriate barriers */ subflow->reset_transient =3D 0; + MPTCP_INC_STATS(sock_net(ssk), MPTCP_MIB_DSSRESET); subflow->reset_reason =3D status =3D=3D MAPPING_NODSS ? MPTCP_RST_EMIDDLEBOX : MPTCP_RST_EMPTCP; --=20 2.53.0 From nobody Sat Aug 15 20:33:36 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-alma10-1.taild15c8.ts.net [100.103.45.18]) (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 093154582CC; Wed, 12 Aug 2026 14:56:13 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=100.103.45.18 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786546584; cv=none; b=qsW7h+/PWJYKpp9HYY5/4gnVaiyRH1IGNZloi51j2JpHJZVBrKdTEYvvDGMOz4BkQwD0EPdN6zcIedwWbEHWvOO5oVQvKLLchDaOTJUfUnxECs41g/WS/qYRsajXgpBTxw4umd56j29Ms3NXfr8kCb0of4tv3OGVjjqDZn5hdiU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786546584; c=relaxed/simple; bh=LzYlqMxOnrP3ac6yswSD0OrjsAL0XQTnCxoappByfew=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=SaEQBA8CyrjrfrjxOUL74UsVwPevxM1RzDT//cjX09YOWvjafQRVp5z4Rzg66O5TVzA4fGhX64YPl3fnOFCOAT5KnlIduYrAropyUayXkAH/WarKb4/BqvnhuRLEoxiDETxEJgJ+UbQcq2VrrRthHMt6Iy4Ns+7nWRLRB9wlOTk= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=jDeHcnzi; arc=none smtp.client-ip=100.103.45.18 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="jDeHcnzi" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 288021F000E9; Wed, 12 Aug 2026 14:56:10 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1786546572; bh=BHTexpgUJnus0ibGvazLufzJY+HblJSMIlw5P4v/khQ=; h=From:Date:Subject:References:In-Reply-To:To:Cc; b=jDeHcnzixOf2HAqQlmgZreaNMJfkzlEHda1XUm4AEeCYwoqsVxYGJlYUtms8IlDyY p3uKJjWrh7TwThjnf7V9yszZWtNhGxh8xXgnYbe5x0PaRDSsmmDcGlZWvIVjNfNP/U enmsMntah9FgKPoEAhwn98V5Ugonb/0hRfM2XhNrwJNlMcAnlXcEoOFXbb2vDKuot0 m8uX2f9YVOyVFfnqnMf0PEg7KDEvLbDvi5wmriCoUt3KYYIlOSnlgse009gsU33OQR H9svguOTdkJH9gCTTtlFbdmP7sQIhylKQ3oHLzNoDoypYXypnpcbcQZSt6SXMFf8mw X9f37GOBj8HGw== From: "Matthieu Baerts (NGI0)" Date: Wed, 12 Aug 2026 16:55:41 +0200 Subject: [PATCH net-next 06/11] selftests: mptcp: check per-event MPTCP_RST_EMPTCP counters 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: <20260812-net-next-mptcp-misc-feat-7-3-v1-6-1905a818f6cb@kernel.org> References: <20260812-net-next-mptcp-misc-feat-7-3-v1-0-1905a818f6cb@kernel.org> In-Reply-To: <20260812-net-next-mptcp-misc-feat-7-3-v1-0-1905a818f6cb@kernel.org> To: Mat Martineau , Geliang Tang , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman Cc: netdev@vger.kernel.org, mptcp@lists.linux.dev, linux-kernel@vger.kernel.org, "Matthieu Baerts (NGI0)" , Shardul Bankar , Shuah Khan , linux-kselftest@vger.kernel.org X-Mailer: b4 0.16.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=6256; i=matttbe@kernel.org; h=from:subject:message-id; bh=/Iroxz+d24z4W4nzpbaKXj8fb/69PMlTOJqVyPvoEGk=; b=owGbwMvMwCVWo/Th0Gd3rumMp9WSGLJqOstcD7jo/GyeUCT29uyOj9rfrDe+3RFTJl6hsrfU0 OC2q8vajlIWBjEuBlkxRRbptsj8mc+reEu8/Cxg5rAygQxh4OIUgImsqWX4Zxy3PrySP3yLwqpb k5melqxP3zP/WbjzI0uHyQt4tC9ILWdkuMSz+v464xn6///u1N4jFiX7TGBS554iu9vLJ8ZfexV 2jQMA X-Developer-Key: i=matttbe@kernel.org; a=openpgp; fpr=E8CB85F76877057A6E27F77AF6B7824F4269A073 From: Shardul Bankar Add named env-var expectations for each per-event MPTCP_RST_EMPTCP counter, matching the pattern used by the existing JOIN/RST checks. Each defaults to 0 and is checked silently on success; a mismatch prints a check line and fails the test. Counters absent from the running kernel are skipped silently so older kernels do not false-fail. The JOIN-related counters (MPJoinSynAckNoMPJoin, MPJoinAckNoMPJoin, MPJoinAckNoCtx, MPJoinNotEstablished, MPJoinNoIdFound) are checked in chk_join_nr() on fixed namespaces; the two remaining reset counters (MD5SigReset, DssReset) stay in chk_rst_nr(). Add a test at the end of signal_address_tests that triggers MPJoinSynAckNoMPJoin: ns1 signals an address that is already bound on the client (ns2), where a TCP-only mptcp_connect listener is started. The client's MP_JOIN routes locally to the TCP listener, which responds with a plain SYN/ACK without the MP_JOIN option, and the new counter increments on the client side. Other per-event counters (MD5SigReset, MPJoinAckNoMPJoin, MPJoinAckNoCtx, DssReset, MPJoinNotEstablished, MPJoinNoIdFound) are not currently reachable from mptcp_join.sh; the env-var hooks are in place for future tests to set expectations explicitly. Assisted-by: Claude:claude-opus-4-7 Signed-off-by: Shardul Bankar 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 | 93 +++++++++++++++++++++= ++++ 1 file changed, 93 insertions(+) diff --git a/tools/testing/selftests/net/mptcp/mptcp_join.sh b/tools/testin= g/selftests/net/mptcp/mptcp_join.sh index 7dc91fac4917..9b9fb3de9da3 100755 --- a/tools/testing/selftests/net/mptcp/mptcp_join.sh +++ b/tools/testing/selftests/net/mptcp/mptcp_join.sh @@ -75,6 +75,14 @@ unset join_syn_tx unset join_create_err unset join_bind_err unset join_connect_err +unset join_synack_no_mpjoin +unset join_ack_no_mpjoin +unset join_ack_no_ctx +unset join_not_established +unset join_no_id_found + +unset rst_md5sig +unset rst_dss =20 unset fb_ns1 unset fb_ns2 @@ -1353,6 +1361,8 @@ chk_rst_nr() local rst_tx=3D$1 local rst_rx=3D$2 local ns_invert=3D${3:-""} + local md5sig=3D${rst_md5sig:-0} + local dss=3D${rst_dss:-0} local count local ns_tx=3D$ns1 local ns_rx=3D$ns2 @@ -1389,6 +1399,21 @@ chk_rst_nr() else print_ok fi + + # MPTCP_RST_EMPTCP reset-event counters; default 0, gated on + # availability. Fixed namespaces: MD5SigReset fires on the listener + # (server), DssReset on the data receiver (client). + count=3D$(mptcp_lib_get_counter ${ns1} "MPTcpExtMD5SigReset") + if [ -n "$count" ] && [ "$count" !=3D "$md5sig" ]; then + print_check "MD5SigReset" + fail_test "got $count MD5SigReset expected $md5sig" + fi + + count=3D$(mptcp_lib_get_counter ${ns2} "MPTcpExtDssReset") + if [ -n "$count" ] && [ "$count" !=3D "$dss" ]; then + print_check "DssReset" + fail_test "got $count DssReset expected $dss" + fi } =20 chk_infi_nr() @@ -1587,6 +1612,11 @@ chk_join_nr() local rst_nr=3D${join_rst_nr:-0} local infi_nr=3D${join_infi_nr:-0} local corrupted_pkts=3D${join_corrupted_pkts:-0} + local synack_no_mpjoin=3D${join_synack_no_mpjoin:-0} + local ack_no_mpjoin=3D${join_ack_no_mpjoin:-0} + local ack_no_ctx=3D${join_ack_no_ctx:-0} + local not_established=3D${join_not_established:-0} + local no_id_found=3D${join_no_id_found:-0} local rc=3D${KSFT_PASS} local count local with_cookie @@ -1655,6 +1685,44 @@ chk_join_nr() fail_test "got $count JOIN[s] syn rejected expected $syn_rej" fi =20 + # Per-event MPTCP_RST_EMPTCP JOIN counters; default 0, gated on + # availability. Fixed namespaces: the *SynAck* one fires on the + # client receiving the SYN/ACK, the others on the server. + count=3D$(mptcp_lib_get_counter ${ns2} "MPTcpExtMPJoinSynAckNoMPJoin") + if [ -n "$count" ] && [ "$count" !=3D "$synack_no_mpjoin" ]; then + rc=3D${KSFT_FAIL} + print_check "synack no mpjoin" + fail_test "got $count JOIN[s] synack no mpjoin expected $synack_no_mpjoi= n" + fi + + count=3D$(mptcp_lib_get_counter ${ns1} "MPTcpExtMPJoinAckNoMPJoin") + if [ -n "$count" ] && [ "$count" !=3D "$ack_no_mpjoin" ]; then + rc=3D${KSFT_FAIL} + print_check "ack no mpjoin" + fail_test "got $count JOIN[s] ack no mpjoin expected $ack_no_mpjoin" + fi + + count=3D$(mptcp_lib_get_counter ${ns1} "MPTcpExtMPJoinAckNoCtx") + if [ -n "$count" ] && [ "$count" !=3D "$ack_no_ctx" ]; then + rc=3D${KSFT_FAIL} + print_check "ack no ctx" + fail_test "got $count JOIN[s] ack no ctx expected $ack_no_ctx" + fi + + count=3D$(mptcp_lib_get_counter ${ns1} "MPTcpExtMPJoinNotEstablished") + if [ -n "$count" ] && [ "$count" !=3D "$not_established" ]; then + rc=3D${KSFT_FAIL} + print_check "join not established" + fail_test "got $count JOIN[s] not established expected $not_established" + fi + + count=3D$(mptcp_lib_get_counter ${ns1} "MPTcpExtMPJoinNoIdFound") + if [ -n "$count" ] && [ "$count" !=3D "$no_id_found" ]; then + rc=3D${KSFT_FAIL} + print_check "join no id found" + fail_test "got $count JOIN[s] no id found expected $no_id_found" + fi + print_results "join Rx" ${rc} =20 join_syn_tx=3D"${join_syn_tx:-${syn_nr}}" \ @@ -2359,6 +2427,31 @@ signal_address_tests() chk_add_nr 4 4 fi fi + + # signalled address belongs to the client, where a TCP-only + # listener is bound at it: the client's MP_JOIN routes locally + # to the listener and receives a SYN/ACK without MP_JOIN. + # MPJoinSynAckNoMPJoin increments on the client side. + if reset "signal address, TCP-only listener on client"; then + local extra_bind + local port + + pm_nl_set_limits $ns1 0 1 + pm_nl_set_limits $ns2 1 1 + pm_nl_add_endpoint $ns1 10.0.2.2 flags signal + + port=3D$(get_port) + ip netns exec ${ns2} ./mptcp_connect -l -t -1 -p "$port" \ + -s TCP 10.0.2.2 & + extra_bind=3D$! + mptcp_lib_wait_local_port_listen "$ns2" "$port" + + run_tests $ns1 $ns2 10.0.1.1 + join_synack_no_mpjoin=3D1 join_syn_tx=3D1 \ + chk_join_nr 0 0 0 + + kill ${extra_bind} 2>/dev/null + fi } =20 laminar_endp_tests() --=20 2.53.0 From nobody Sat Aug 15 20:33:36 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-alma10-1.taild15c8.ts.net [100.103.45.18]) (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 013FE46EC8B; Wed, 12 Aug 2026 14:56:16 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=100.103.45.18 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786546590; cv=none; b=aNv5W6hojmK6Qb+uMJHahWZj8CPDqIjn2bh+z7V4WLgIKUaSFYPlpra3xvE3fCBo8Sev3URPua8sFFMp9MblM6aqgxQAED2Sb+Ok2uq9xuRuVyaNCbNivwdveFHVvJahfOggi1BvJANKaE7aIFIqb3wgar1FtM7eAbeCH/b+I/c= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786546590; c=relaxed/simple; bh=9DWzG4MqvnbfffxHxIao0Il/rNYmDxD1jYc/ee7W/GQ=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=d/5bECJFc6HRbojShUDhX1GE+0zIC3qof8lC8n+Z9G5Bjva9Xz4/uxCOjH/Bj9q8GXP8ioP1vvjzpAzcdTVmoQ9UAmMdxfYVayB2RjC3JuvY/OaP/Nkm3CoN2H+rMFNH23pnkWFPlizA6By1cNAeb+mM2FG3olzYAMc10kdwu9g= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=XP9r5H/L; arc=none smtp.client-ip=100.103.45.18 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="XP9r5H/L" Received: by smtp.kernel.org (Postfix) with ESMTPSA id C83371F00A3A; Wed, 12 Aug 2026 14:56:12 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1786546574; bh=gW5vkNJ/C6DwDC9a9I8rYyU9QwK6sEUGGymq0Yf8CxQ=; h=From:Date:Subject:References:In-Reply-To:To:Cc; b=XP9r5H/LfPOETGoCrLttsmQJvElVFaux9EWKpylTcPCqUf0/cAG4ojtvkf1YTR0ke 3vLYZFy1Z36SJwq4dgeQyUlZPSOd2wv6+GxN2hIPyw/g/vscNcVWYz+zOoS+aDjCfO rXspVFOo6EMUzJbSmnV4BoWUllSfd28/tNUaiq3dDm4NgY8SXMK3v8aAvTGTc2wNVA 7l5VDVy5WzcIMX1To7R2S9yYyfC7ZOwfp4IEpeEpHE5/LKe+rBlZLlfuomz/u+OIcj EixpBZb1U2KJj/fqO+k3XoNoTKYqPiXMWrR5YBzKzqwU3V4CuQ+6Pze4QUxkE/hCyg QqdrLPDuNAGCA== From: "Matthieu Baerts (NGI0)" Date: Wed, 12 Aug 2026 16:55:42 +0200 Subject: [PATCH net-next 07/11] selftests: mptcp: connect: test name in pcap file 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: <20260812-net-next-mptcp-misc-feat-7-3-v1-7-1905a818f6cb@kernel.org> References: <20260812-net-next-mptcp-misc-feat-7-3-v1-0-1905a818f6cb@kernel.org> In-Reply-To: <20260812-net-next-mptcp-misc-feat-7-3-v1-0-1905a818f6cb@kernel.org> To: Mat Martineau , Geliang Tang , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman Cc: netdev@vger.kernel.org, mptcp@lists.linux.dev, linux-kernel@vger.kernel.org, "Matthieu Baerts (NGI0)" , Shuah Khan , linux-kselftest@vger.kernel.org X-Mailer: b4 0.16.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=1565; i=matttbe@kernel.org; h=from:subject:message-id; bh=9DWzG4MqvnbfffxHxIao0Il/rNYmDxD1jYc/ee7W/GQ=; b=owGbwMvMwCVWo/Th0Gd3rumMp9WSGLJqOss52FoWPJ5gMyH5/F+fFudYialM2x8kKM/Jyvfak x9ebODRUcrCIMbFICumyCLdFpk/83kVb4mXnwXMHFYmkCEMXJwCMJHLuxgZVj5Onygzqz54ck/8 gl9fDvAdL47fzDBNVVTo3VHF7nvybQz/9HzbHrbtSQiP9+HU+X+jbdmDb4Hql/4fnDvztMwXkRn V3AA= X-Developer-Key: i=matttbe@kernel.org; a=openpgp; fpr=E8CB85F76877057A6E27F77AF6B7824F4269A073 Even if the pcap prefix is printed in the test, it is clearer if this prefix also include the test name: mptcp_connect. With this, it is easily possible to find out which pcap was produced by which test, and easily delete the right ones. Reviewed-by: Mat Martineau Signed-off-by: Matthieu Baerts (NGI0) --- To: Shuah Khan Cc: linux-kselftest@vger.kernel.org --- tools/testing/selftests/net/mptcp/mptcp_connect.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tools/testing/selftests/net/mptcp/mptcp_connect.sh b/tools/tes= ting/selftests/net/mptcp/mptcp_connect.sh index d158678fa6ab..5befd8584a4d 100755 --- a/tools/testing/selftests/net/mptcp/mptcp_connect.sh +++ b/tools/testing/selftests/net/mptcp/mptcp_connect.sh @@ -212,8 +212,8 @@ if $checksum; then fi =20 if $capture; then - rndh=3D"${ns1:4}" - mptcp_lib_pr_info "Packet capture files will have this prefix: ${rndh}-" + capprefix=3D"mptcp_connect-${ns1:4}" + mptcp_lib_pr_info "pcap will have this prefix: ${capprefix}-" fi =20 set_ethtool_flags() { @@ -372,7 +372,7 @@ do_transfer() capuser=3D"-Z $SUDO_USER" fi =20 - local capfile=3D"${rndh}-${connector_ns:0:3}-${listener_ns:0:3}-${cl_pro= to}-${srv_proto}-${connect_addr}-${port}" + local capfile=3D"${capprefix}-${connector_ns:0:3}-${listener_ns:0:3}-${c= l_proto}-${srv_proto}-${connect_addr}-${port}" local capopt=3D"-i any -s 65535 -B 32768 ${capuser}" =20 ip netns exec ${listener_ns} tcpdump ${capopt} \ --=20 2.53.0 From nobody Sat Aug 15 20:33:36 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-alma10-1.taild15c8.ts.net [100.103.45.18]) (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 1641946F496; Wed, 12 Aug 2026 14:56:20 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=100.103.45.18 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786546590; cv=none; b=rCVeaCIkpKafwhNNLUCe1F4aqyP2dpnBLteJWkweIlBYgsvb2/HroCuClH2M9IFZxeROY8EGzhfxw0buL2JWHuxhWgy77jnoFLwvqtRPCITXCcd3m3f7RH2f3DQH4qOH5o5mgSMF27hdgr8CEaMf8BKfdxLlGY2G8HEdaJ+0dfs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786546590; c=relaxed/simple; bh=cuNOESNy/WTkiZBwkZbo/pzBIRAdYpOMb4gpizZ/7Nk=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=ptwwGVTBCscuJpUAKHVSzLvbaCVgaSEkLaWHfJayLqjgHMXT4sYuWbC08ztABdV0Lrsr6TeESBpZEJXbXNgSd+Mggbe0hzCO1KIW/Mre6ehMOjyeVfXtrspf2KnBPKDbujwkST3LG4mvUfnkyfK4+4iUAbSXLmceMsoJI3tyOZ0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=gMoYA6lF; arc=none smtp.client-ip=100.103.45.18 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="gMoYA6lF" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 4E9291F00A3D; Wed, 12 Aug 2026 14:56:15 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1786546577; bh=eDfXtKVcaOGNG9KazWljQpgi3UNwtob5VzSegX5vxac=; h=From:Date:Subject:References:In-Reply-To:To:Cc; b=gMoYA6lFUa62lq/OcsusmYBlCcTvvwUcLI1djq3sXenXY7ZpPVkXDm48t6eAdF3Ph nRHP2bgiOSzjN7XD4tENgZtWWd7ghkuxbh5e5iZL4LazaNpW05O0P4opyIJek2AbKO ScFn3BZv0Z6iRXKPcZ/outI52Snfy3MdSE6MQ3UNE+P+yVTsKjzD9j/ALXQBXSVu4h x4T5b5EFBFCtpO0vqOarZZLN8c6z6lKQKokJQ06VQPKSUtiFE4+hnKO0XIKTRoU14l 8Yjh0tQAzyxLI6EcpVErTYGydq6c9UXYSfK+Zm3WGF75AuDrpCU3DOA5mXJ6kuovYO LIH1O9O5qoSXA== From: "Matthieu Baerts (NGI0)" Date: Wed, 12 Aug 2026 16:55:43 +0200 Subject: [PATCH net-next 08/11] selftests: mptcp: simult_flow: test name in pcap file 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: <20260812-net-next-mptcp-misc-feat-7-3-v1-8-1905a818f6cb@kernel.org> References: <20260812-net-next-mptcp-misc-feat-7-3-v1-0-1905a818f6cb@kernel.org> In-Reply-To: <20260812-net-next-mptcp-misc-feat-7-3-v1-0-1905a818f6cb@kernel.org> To: Mat Martineau , Geliang Tang , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman Cc: netdev@vger.kernel.org, mptcp@lists.linux.dev, linux-kernel@vger.kernel.org, "Matthieu Baerts (NGI0)" , Shuah Khan , linux-kselftest@vger.kernel.org X-Mailer: b4 0.16.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=1888; i=matttbe@kernel.org; h=from:subject:message-id; bh=cuNOESNy/WTkiZBwkZbo/pzBIRAdYpOMb4gpizZ/7Nk=; b=owGbwMvMwCVWo/Th0Gd3rumMp9WSGLJqOssbpuZ7PA2Wdb9muv5dyIr6GKlJEqvkZj1m/dXCz 7luw0rhjlIWBjEuBlkxRRbptsj8mc+reEu8/Cxg5rAygQxh4OIUgIkUxzMy3M+7y/B4jVV7sSp3 vPPpq8snvV17RKeFd8JJw8x6ka+JPxn+cM407Ly5ZQfjr3tn7hz9r1h75pUSy5FVSzUylsm+4ry /kA8A X-Developer-Key: i=matttbe@kernel.org; a=openpgp; fpr=E8CB85F76877057A6E27F77AF6B7824F4269A073 To be able to easily find out which pcap was produced by which test, the selftest name is now added to the pcap file, similar to the other tests. While at it, print the prefix name to be able to find which capture files have been produced by which test after several runs. This prefix was not printed anywhere before. Reviewed-by: Mat Martineau Signed-off-by: Matthieu Baerts (NGI0) --- To: Shuah Khan Cc: linux-kselftest@vger.kernel.org --- tools/testing/selftests/net/mptcp/simult_flows.sh | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/tools/testing/selftests/net/mptcp/simult_flows.sh b/tools/test= ing/selftests/net/mptcp/simult_flows.sh index 7b9aabe10170..d723261bdc62 100755 --- a/tools/testing/selftests/net/mptcp/simult_flows.sh +++ b/tools/testing/selftests/net/mptcp/simult_flows.sh @@ -24,6 +24,7 @@ small=3D"" sout=3D"" cout=3D"" capout=3D"" +capprefix=3D"" size=3D0 =20 usage() { @@ -70,6 +71,11 @@ setup() =20 mptcp_lib_ns_init ns1 ns2 ns3 =20 + if $capture; then + capprefix=3D"simult_flows-${ns1:4}" + mptcp_lib_pr_info "pcap will have this prefix: ${capprefix}-" + fi + ip link add ns1eth1 netns "$ns1" type veth peer name ns2eth1 netns "$ns2" ip link add ns1eth2 netns "$ns1" type veth peer name ns2eth2 netns "$ns2" ip link add ns2eth3 netns "$ns2" type veth peer name ns3eth1 netns "$ns3" @@ -136,14 +142,13 @@ do_transfer() =20 if $capture; then local capuser - local rndh=3D"${ns1:4}" if [ -z $SUDO_USER ] ; then capuser=3D"" else capuser=3D"-Z $SUDO_USER" fi =20 - local capfile=3D"${rndh}-${port}" + local capfile=3D"${capprefix}-${port}" local capopt=3D"-i any -s 65535 -B 32768 ${capuser}" =20 ip netns exec ${ns3} tcpdump ${capopt} -w "${capfile}-listener.pcap" >= > "${capout}" 2>&1 & --=20 2.53.0 From nobody Sat Aug 15 20:33:36 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-alma10-1.taild15c8.ts.net [100.103.45.18]) (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 341EB46EC72; Wed, 12 Aug 2026 14:56:22 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=100.103.45.18 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786546596; cv=none; b=e/2J1C1sDSaivHlOXOm7OWZdO7wl33hJwUJe/wc/+cW3cymSCdmc2ueDRGOX9SRvvWsgOViupjKeO6p7IxZ6VfcC4tMVTa4CjHpnpNwhcNfzJGg5e2UaT9GFOB50EwhzZsa363GG5IJSVhMDaiBBcaPmeIkGLNqlKS2TxC/nQ00= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786546596; c=relaxed/simple; bh=49Ik8By8GbCNa5AsFN3C+453nDSqAI8MYhZCAvXgcjY=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=YJ/742dsf6uV1JkLzgiiNey6QlTY9uSXultBc8DMv6JGA6/N7EgYJ6gdmfloJkV/DMVDv082BbA5aclMfQiqVQSvHYC1GXR+0RJq+OUY3KEW5ZyyoOH4HAG5xpQqunEl9d6z00+FNwL49446dpH8nUiIkpk0TOVEA4V4I6wqX9o= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=i5K2AcKQ; arc=none smtp.client-ip=100.103.45.18 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="i5K2AcKQ" Received: by smtp.kernel.org (Postfix) with ESMTPSA id C99A71F00A3E; Wed, 12 Aug 2026 14:56:17 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1786546579; bh=M8D9l0UyVadTJptn2fPji4IoFUm7G2/mRKx7CW8eWrk=; h=From:Date:Subject:References:In-Reply-To:To:Cc; b=i5K2AcKQi3NwCHqc4XslrROTawuTFkou+B32egz2Sy89RVDyZYkqfskExqhtBMjHL OwdZ1SQzg9g4DKVAIR4KHh5vPhzAShFsrhYbbmp9iWAO0YYcl+kGMgfKHWWXsSw5hF hUTIAN/8ZgH17x1wTdqpNPSSchVfeXvbrbpJEMGstZdSMmdZUhF6ozU3sJuSufG5de Lz1Lw3qjSBmn0b/uy9OHG4d7vO5chgSZ+0HsEGv1dAH9V6SccnUjLB1KveefYeYs4U kKea7HUS2oPGR+kOoIk996UiwMN3nNVImIbkxBmdXbEqzC+f6Gapx5TtYBTjZLIw9b njXPi5Afs7ZYQ== From: "Matthieu Baerts (NGI0)" Date: Wed, 12 Aug 2026 16:55:44 +0200 Subject: [PATCH net-next 09/11] selftests: mptcp: pcap: drop most of the payload 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: <20260812-net-next-mptcp-misc-feat-7-3-v1-9-1905a818f6cb@kernel.org> References: <20260812-net-next-mptcp-misc-feat-7-3-v1-0-1905a818f6cb@kernel.org> In-Reply-To: <20260812-net-next-mptcp-misc-feat-7-3-v1-0-1905a818f6cb@kernel.org> To: Mat Martineau , Geliang Tang , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman Cc: netdev@vger.kernel.org, mptcp@lists.linux.dev, linux-kernel@vger.kernel.org, "Matthieu Baerts (NGI0)" , Shuah Khan , linux-kselftest@vger.kernel.org X-Mailer: b4 0.16.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=2841; i=matttbe@kernel.org; h=from:subject:message-id; bh=49Ik8By8GbCNa5AsFN3C+453nDSqAI8MYhZCAvXgcjY=; b=owGbwMvMwCVWo/Th0Gd3rumMp9WSGLJqOiuUHO91hjLYM27UWh7z9lkxzyKP5oSGSmfd6MYC8 Ue18j4dpSwMYlwMsmKKLNJtkfkzn1fxlnj5WcDMYWUCGcLAxSkAE/G3Yfhnu/7Pl89rPc9eOjHr r5JWwsl9M/mnvDFjyecWD00R7llby8gw2/BX5MI9thJcvs8DZ3W5SqrPWrUuI4W1amnRAd39dnc YAQ== X-Developer-Key: i=matttbe@kernel.org; a=openpgp; fpr=E8CB85F76877057A6E27F77AF6B7824F4269A073 Limit the size of each captured packet to 108B (IPv4 only) or 128B (a mix of v4 and v6): this should drop most of the payload that is generally not needed when debugging an issue. 8 bytes are left in this payload, to be able to inspect the beginning, just in case. Please also note that generally, this payload is usually mostly filled with 0, except at the end. This reduces the .pcap sizes, and reduce IO usage, which helps debugging issues. Reviewed-by: Mat Martineau Signed-off-by: Matthieu Baerts (NGI0) --- To: Shuah Khan Cc: linux-kselftest@vger.kernel.org --- tools/testing/selftests/net/mptcp/mptcp_connect.sh | 2 +- tools/testing/selftests/net/mptcp/mptcp_join.sh | 2 +- tools/testing/selftests/net/mptcp/simult_flows.sh | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/tools/testing/selftests/net/mptcp/mptcp_connect.sh b/tools/tes= ting/selftests/net/mptcp/mptcp_connect.sh index 5befd8584a4d..7a2a851fa0ad 100755 --- a/tools/testing/selftests/net/mptcp/mptcp_connect.sh +++ b/tools/testing/selftests/net/mptcp/mptcp_connect.sh @@ -373,7 +373,7 @@ do_transfer() fi =20 local capfile=3D"${capprefix}-${connector_ns:0:3}-${listener_ns:0:3}-${c= l_proto}-${srv_proto}-${connect_addr}-${port}" - local capopt=3D"-i any -s 65535 -B 32768 ${capuser}" + local capopt=3D"-i any -s 128 -B 32768 ${capuser}" =20 ip netns exec ${listener_ns} tcpdump ${capopt} \ -w "${capfile}-listener.pcap" >> "${capout}" 2>&1 & diff --git a/tools/testing/selftests/net/mptcp/mptcp_join.sh b/tools/testin= g/selftests/net/mptcp/mptcp_join.sh index 9b9fb3de9da3..18ce7136a2b0 100755 --- a/tools/testing/selftests/net/mptcp/mptcp_join.sh +++ b/tools/testing/selftests/net/mptcp/mptcp_join.sh @@ -979,7 +979,7 @@ cond_start_capture() capfile=3D$(printf "mp_join-%02u-%s.pcap" "$MPTCP_LIB_TEST_COUNTER" "$ns= ") =20 echo "Capturing traffic for test $MPTCP_LIB_TEST_COUNTER into $capfile" - ip netns exec "$ns" tcpdump -i any -s 65535 -B 32768 $capuser -w "$capfi= le" > "$capout" 2>&1 & + ip netns exec "$ns" tcpdump -i any -s 128 -B 32768 $capuser -w "$capfile= " > "$capout" 2>&1 & cappid=3D$! =20 sleep 1 diff --git a/tools/testing/selftests/net/mptcp/simult_flows.sh b/tools/test= ing/selftests/net/mptcp/simult_flows.sh index d723261bdc62..3ea3d1efe32e 100755 --- a/tools/testing/selftests/net/mptcp/simult_flows.sh +++ b/tools/testing/selftests/net/mptcp/simult_flows.sh @@ -149,7 +149,7 @@ do_transfer() fi =20 local capfile=3D"${capprefix}-${port}" - local capopt=3D"-i any -s 65535 -B 32768 ${capuser}" + local capopt=3D"-i any -s 108 -B 32768 ${capuser}" =20 ip netns exec ${ns3} tcpdump ${capopt} -w "${capfile}-listener.pcap" >= > "${capout}" 2>&1 & local cappid_listener=3D$! --=20 2.53.0 From nobody Sat Aug 15 20:33:36 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-alma10-1.taild15c8.ts.net [100.103.45.18]) (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 14C7F46D2A9; Wed, 12 Aug 2026 14:56:24 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=100.103.45.18 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786546594; cv=none; b=qgIT/bMJ7u4j2gWkS4PFQSfviym/H2dTtnyLzFvqydPTf/oTfxy78wpSoGWiSoZbpA8fdjZyq5APwhzTRAdfvOezz4avnUk72WOFSVtuebWhAaMGj3CxGCNAEBnMg1lpMS89dhLqsHkBP3ah8X11hLXp6T6+DA0aUgiIW8UPlRg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786546594; c=relaxed/simple; bh=nKeL6zR0FvSkwqt1XKsxG9dC4ZW7w7ssB4opyx4q8S4=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=PagXulZs237U2wBPrAWLdMBOtr8uxxlOZ1EfckfM7/3aG3RdfC0/fQJVXyaxOUpbbyYoEGN7zEIY5U/Mah78Tnz/qSAd8H+/grSedipBzHH2BSMQ3DjE4vZ8/kAYFHQ0wJEQ3Wb8l8FSbEFREMTX82U3DgskSjMOejoEUhbcZew= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=GLBujH1n; arc=none smtp.client-ip=100.103.45.18 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="GLBujH1n" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 501F31F00AC4; Wed, 12 Aug 2026 14:56:20 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1786546582; bh=YcxL9EIjig3QodKUmDaete2bH5tnLyqpAVf3cFMscWE=; h=From:Date:Subject:References:In-Reply-To:To:Cc; b=GLBujH1nVNFdokgBLe2Mx/5WB/hV1FHF4E6kWuUAw4Kf/k7IkOAlJ271xOn/gpG6r 0EiXpRU5tUvo3Kfu3Ge9ToAUBEeIRBev3B2CPslZBGhhhSghnw0Q1O+GhYV0vvInPT A4cNVoZ9OoUMjKwVGSOuiTUtZD2eJmCkiqdXeztkKqE7UfJH+EVJ044Ir/3IlG4jiB WUxzHpgUuANfOOJO+L/FAEMhHox+lQOTCsLMPmOyiV9RYYrwS88Qqmo9xwX88See0D LGdLcVyOQBB2VJPE93rp3sW1Bq3ktgWbcJsKJIrVcaYqvCPmhh3ZZbKKbfXzjzls2L Jei8O7n1VvbnA== From: "Matthieu Baerts (NGI0)" Date: Wed, 12 Aug 2026 16:55:45 +0200 Subject: [PATCH net-next 10/11] selftests: mptcp: fix const qualifier warnings in strchr usage 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: <20260812-net-next-mptcp-misc-feat-7-3-v1-10-1905a818f6cb@kernel.org> References: <20260812-net-next-mptcp-misc-feat-7-3-v1-0-1905a818f6cb@kernel.org> In-Reply-To: <20260812-net-next-mptcp-misc-feat-7-3-v1-0-1905a818f6cb@kernel.org> To: Mat Martineau , Geliang Tang , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman Cc: netdev@vger.kernel.org, mptcp@lists.linux.dev, linux-kernel@vger.kernel.org, "Matthieu Baerts (NGI0)" , Shuah Khan , linux-kselftest@vger.kernel.org, Geliang Tang X-Mailer: b4 0.16.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=2244; i=matttbe@kernel.org; h=from:subject:message-id; bh=4LSthEUfeknPiuCGNZFRTmg5QwSZ53sxQ5j6RTKzcBY=; b=owGbwMvMwCVWo/Th0Gd3rumMp9WSGLJqOiuVNzlLODkXCvzQlQzcY3d6z/81umuZTYVEvxgfl WV03MjSUcrCIMbFICumyCLdFpk/83kVb4mXnwXMHFYmkCEMXJwCMJHL4gx/eC90np5h2fv3RtAC Jp6qzPhqoWqGY/v+9X2dv2bnaXVHb0aGXnYFH+l5L87P0GhLaXz5/eW6hsasibsW6c3JUTKIZpz HDQA= X-Developer-Key: i=matttbe@kernel.org; a=openpgp; fpr=E8CB85F76877057A6E27F77AF6B7824F4269A073 From: Geliang Tang In mptcp_connect.c, strchr() returns a pointer to a character within the input string, which is declared as const char *. Assigning this return value to a non-const char * discards the const qualifier, triggering compiler warnings: make: Entering directory 'tools/testing/selftests/net/mptcp' CC mptcp_connect mptcp_connect.c: In function 'parse_cmsg_types': mptcp_connect.c:1267:22: warning: initialization discards 'const' qualifier from pointer target type [-Wdiscarded-qualifiers] 1267 | char *next =3D strchr(type, ','); | ^~~~~~ mptcp_connect.c: In function 'parse_setsock_options': mptcp_connect.c:1295:22: warning: initialization discards 'const' qualifier from pointer target type [-Wdiscarded-qualifiers] 1295 | char *next =3D strchr(name, ','); | ^~~~~~ make: Leaving directory 'tools/testing/selftests/net/mptcp' Fix these warnings by declaring the 'next' variable as const char *, as it is only used for read-only parsing. Signed-off-by: Geliang Tang 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_connect.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tools/testing/selftests/net/mptcp/mptcp_connect.c b/tools/test= ing/selftests/net/mptcp/mptcp_connect.c index cbe573c4ab3a..ea4cb6c1bd5e 100644 --- a/tools/testing/selftests/net/mptcp/mptcp_connect.c +++ b/tools/testing/selftests/net/mptcp/mptcp_connect.c @@ -1264,7 +1264,7 @@ static void apply_cmsg_types(int fd, const struct cfg= _cmsg_types *cmsg) =20 static void parse_cmsg_types(const char *type) { - char *next =3D strchr(type, ','); + const char *next =3D strchr(type, ','); unsigned int len =3D 0; =20 cfg_cmsg_types.cmsg_enabled =3D 1; @@ -1292,7 +1292,7 @@ static void parse_cmsg_types(const char *type) =20 static void parse_setsock_options(const char *name) { - char *next =3D strchr(name, ','); + const char *next =3D strchr(name, ','); unsigned int len =3D 0; =20 if (next) { --=20 2.53.0 From nobody Sat Aug 15 20:33:36 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-alma10-1.taild15c8.ts.net [100.103.45.18]) (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 2BBDC470E81; Wed, 12 Aug 2026 14:56:25 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=100.103.45.18 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786546598; cv=none; b=tfpKa2HGb6V83QQtNTKTLmMCi7umEY0tkb3EC0HG5mGtJq9OUlqBtgWqh0NhfJaeZQW7oZM/wamJkeK1slBCsS36kutV5em6i9RVPlnaoOtiFaFadHqj619cGJSRlGBUDoAjk40sSS8I6f6px5AFxMSww1fjxaJ73ib+Wndwyr0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786546598; c=relaxed/simple; bh=/++cNIwC7scRn8UAnBZ/X3QB/AugdSo4EyuJlLOOXrw=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=mUoNrW4jvUxTUlevQ4ZhBjttJVdLtVCLhqbtVOgyPPhIrgHFo78u2BNQuo4o36Ja1/IKqQIpKBpX39VrpH97/jktW76uI2gE3vLIkUOSE9Le/rbQL0ygK22GzW5QF0SJXAVIVdt2oOrsI4xjphDM9JcXhTOOeC/g7wH8WPi13y4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=bV6KIz5d; arc=none smtp.client-ip=100.103.45.18 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="bV6KIz5d" Received: by smtp.kernel.org (Postfix) with ESMTPSA id CC0D01F00ADB; Wed, 12 Aug 2026 14:56:22 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1786546585; bh=99L7Qb0T1mZdY2Odsi01Idha5EYcQTmoWYTTFhZRnHc=; h=From:Date:Subject:References:In-Reply-To:To:Cc; b=bV6KIz5dmp8qX+pi+mqDj+BkXdVohtD9I0x19mq/m9KfJKaASGE7d00I0q+bwnZ3K UFSZBI41kJe867EdTTiHu7s4MaCGQMSBJvJtyE61S+2ZhSPhtuEoQr/h4KsqXDkGI9 mj2vIMPnmf96HxZE3s8RYzXZKMnhq0wSHmQ7FlD+w9u6TXk0BB8BvgBK6s1mFnUcUk QO6J38f2wCYKXFNXjlyuhUJi4h4RM1GrRd4YkehVDRhOxH/x4tPrz0WYzMNGw8JaPZ AMR0To2YQPgpa5XC4lh4IHRYOnKHmvXK4lA6YZGDDSAaoiG5zkq7llat8fWUPKzKFG kHOvNLy7KI09w== From: "Matthieu Baerts (NGI0)" Date: Wed, 12 Aug 2026 16:55:46 +0200 Subject: [PATCH net-next 11/11] selftests: mptcp: diag: fix stack buffer overflow in get_subflow_info() 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: <20260812-net-next-mptcp-misc-feat-7-3-v1-11-1905a818f6cb@kernel.org> References: <20260812-net-next-mptcp-misc-feat-7-3-v1-0-1905a818f6cb@kernel.org> In-Reply-To: <20260812-net-next-mptcp-misc-feat-7-3-v1-0-1905a818f6cb@kernel.org> To: Mat Martineau , Geliang Tang , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman Cc: netdev@vger.kernel.org, mptcp@lists.linux.dev, linux-kernel@vger.kernel.org, "Matthieu Baerts (NGI0)" , Jiangshan Yi , Shuah Khan , linux-kselftest@vger.kernel.org X-Mailer: b4 0.16.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=2061; i=matttbe@kernel.org; h=from:subject:message-id; bh=ZQd/MrYUKm4TlmYB1vFvMyTuLUJRZJTgoE3JKvtLoTw=; b=owGbwMvMwCVWo/Th0Gd3rumMp9WSGLJqOit9Mv9vmsirx8LlLxLWOHm/sFXVNDNdPkexr/x6W f/C7Od0lLIwiHExyIopski3RebPfF7FW+LlZwEzh5UJZAgDF6cATER/MyPDvmestoGPzDNv31n3 1OOBr4zb8YIpe81v6UQtWpFw+8UvJoZ/6ukpvDFiRj6OKdrz/AyLtx3fekChRKtP4vbMX5J9LZG sAA== X-Developer-Key: i=matttbe@kernel.org; a=openpgp; fpr=E8CB85F76877057A6E27F77AF6B7824F4269A073 From: Jiangshan Yi get_subflow_info() parses the subflow address string with: char saddr[64], daddr[64]; ret =3D sscanf(subflow_addrs, "%[^:]:%d %[^:]:%d", saddr, &sport, daddr, &dport); The subflow_addrs buffer holds up to 1024 bytes and is taken directly from the command line ("-c" argument). The "%[^:]" conversions have no maximum field width, so if the address substring before the ':' exceeds 63 bytes, sscanf() writes past the end of the 64-byte saddr/daddr stack buffers. This overflows the stack, corrupting adjacent stack data such as the saved return address, and can crash the tool or lead to out-of-bounds writes controlled by user-supplied input. Bound both string conversions to the destination buffer size by adding an explicit maximum field width of 63 (leaving room for the terminating NUL), so at most 63 bytes are written into each 64-byte buffer: ret =3D sscanf(subflow_addrs, "%63[^:]:%d %63[^:]:%d", saddr, &sport, daddr, &dport); The subflow address can be passed in argument, so fixing this is helpful when the tool is manually used. Reviewed-by: Geliang Tang Signed-off-by: Jiangshan Yi Signed-off-by: Matthieu Baerts (NGI0) --- To: Shuah Khan Cc: linux-kselftest@vger.kernel.org --- tools/testing/selftests/net/mptcp/mptcp_diag.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tools/testing/selftests/net/mptcp/mptcp_diag.c b/tools/testing= /selftests/net/mptcp/mptcp_diag.c index 5e222ba977e4..3b8d2c8a6216 100644 --- a/tools/testing/selftests/net/mptcp/mptcp_diag.c +++ b/tools/testing/selftests/net/mptcp/mptcp_diag.c @@ -377,7 +377,8 @@ static void get_subflow_info(char *subflow_addrs) int ret; int fd; =20 - ret =3D sscanf(subflow_addrs, "%[^:]:%d %[^:]:%d", saddr, &sport, daddr, = &dport); + ret =3D sscanf(subflow_addrs, "%63[^:]:%d %63[^:]:%d", + saddr, &sport, daddr, &dport); if (ret !=3D 4) die_perror("IP PORT Pairs has style problems!"); =20 --=20 2.53.0