From nobody Sat Apr 11 11:23:26 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 CFAED37BE78; Fri, 3 Apr 2026 11:29:55 +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=1775215795; cv=none; b=HoNG60D0vvlx8K2l0Z3tL9PO0tXlqyZYCpHiVousSVhTpoM0s1oEhCUr+B9BHGwsserCNAImegeeUIS1eDRsPaqYE+PXwkUhBlblLLl2h2F0T7M1RyfDQHhS87xkowKX3pBEj6vCvOKhObWvlVC5nj1NeR51nBTeBPaQ06sR8EM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775215795; c=relaxed/simple; bh=VPuMCcSMn0fGFWGRYpAGvUyYaU9ngULkySrtJMxEQ3o=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=hVtxdgb1bvHceJk/pc2b8GYqIo33hYRGBLIaYlnAyMN2vEnyolVA90bZWDURR72pO6pCpAn/95aMCLoE7yT4BI6EzmAeMF0H90015sLKmcNgBKTzSTWGhp6i59CZ6irqCw5YUitRGeVKboXrdICpN/imn4XSQz4Ambs/K9QMVOY= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=FQ4Yg+kV; 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="FQ4Yg+kV" Received: by smtp.kernel.org (Postfix) with ESMTPSA id CD50FC19423; Fri, 3 Apr 2026 11:29:52 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1775215794; bh=VPuMCcSMn0fGFWGRYpAGvUyYaU9ngULkySrtJMxEQ3o=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=FQ4Yg+kVHjuAft1BIBzk/JrL3VR+FvEhtd7+E5N2mhI/KZMsDxgIt4WxYOQ2iFXoO vTrwADIaR2Qw7Ww+dXJWIGkn3KsiSsy7i+17Js7YVy6WjXhNAFoiKZyeEOh5OQp+8N ClX90mgoOT1bU1ck0VQ5LbYy+DeLNoimd8BpvxPTwE2vH06f3ee1Ml/qKTl9pQMG69 SeB2doUr6C3gThEmTgMXKrgjPReZYN0otqEtW+EUBjbxDDBYnRSGRkSLE6aXN52bDp 1ICv4i2e0M41oWPcsRRXcuwQcA0Lj9ZBJJibe2Sr0s2tWh+m+CYeu9rIsM7GbKDUS9 n4cvk7SG2GDkw== From: "Matthieu Baerts (NGI0)" Date: Fri, 03 Apr 2026 13:29:27 +0200 Subject: [PATCH net-next 1/5] mptcp: reduce 'overhead' from u16 to u8 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: <20260403-net-next-mptcp-msg_eor-misc-v1-1-b0b33bea3fed@kernel.org> References: <20260403-net-next-mptcp-msg_eor-misc-v1-0-b0b33bea3fed@kernel.org> In-Reply-To: <20260403-net-next-mptcp-msg_eor-misc-v1-0-b0b33bea3fed@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)" , Gang Yan X-Mailer: b4 0.15.1 X-Developer-Signature: v=1; a=openpgp-sha256; l=1605; i=matttbe@kernel.org; h=from:subject:message-id; bh=YCYDzaz5Nyw/pADvCjdf3hqBQ1LHqoworLozj+9TNkM=; b=owGbwMvMwCVWo/Th0Gd3rumMp9WSGDLPL1kVcX/X8p/ZRz0m1KZLLK9krPwtEir6qy/ZN8C5M fMqT7dcRykLgxgXg6yYIot0W2T+zOdVvCVefhYwc1iZQIYwcHEKwET81zH8L9kZtd+I8+mj/709 VZGN75QN1wqIFbdGrNbfulH3R+y92wz/Q1qv+gsdqT15/dEtzljfqn1Xw3ZpLHbLc43mWc2Yl5r FBgA= X-Developer-Key: i=matttbe@kernel.org; a=openpgp; fpr=E8CB85F76877057A6E27F77AF6B7824F4269A073 From: Gang Yan The 'overhead' in struct mptcp_data_frag can safely use u8, as it represents 'alignment + sizeof(mptcp_data_frag)'. With a maximum alignment of 7('ALIGN(1, sizeof(long)) - 1'), the overhead is at most 47, well below U8_MAX and validated with BUILD_BUG_ON(). This patch also adds a field named 'unused' for further extensions. Signed-off-by: Gang Yan Reviewed-by: Matthieu Baerts (NGI0) Signed-off-by: Matthieu Baerts (NGI0) --- net/mptcp/protocol.c | 6 ++++++ net/mptcp/protocol.h | 3 ++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/net/mptcp/protocol.c b/net/mptcp/protocol.c index 239fb9e75c7c..79315e575d07 100644 --- a/net/mptcp/protocol.c +++ b/net/mptcp/protocol.c @@ -4616,6 +4616,12 @@ void __init mptcp_proto_init(void) inet_register_protosw(&mptcp_protosw); =20 BUILD_BUG_ON(sizeof(struct mptcp_skb_cb) > sizeof_field(struct sk_buff, c= b)); + + /* struct mptcp_data_frag: 'overhead' corresponds to the alignment + * (ALIGN(1, sizeof(long)) - 1, so 8-1) + the struct's size + */ + BUILD_BUG_ON(ALIGN(1, sizeof(long)) - 1 + sizeof(struct mptcp_data_frag) + > U8_MAX); } =20 #if IS_ENABLED(CONFIG_MPTCP_IPV6) diff --git a/net/mptcp/protocol.h b/net/mptcp/protocol.h index 0bd1ee860316..02031007100b 100644 --- a/net/mptcp/protocol.h +++ b/net/mptcp/protocol.h @@ -263,7 +263,8 @@ struct mptcp_data_frag { u64 data_seq; u16 data_len; u16 offset; - u16 overhead; + u8 overhead; + u8 __unused; u16 already_sent; struct page *page; }; --=20 2.53.0 From nobody Sat Apr 11 11:23:26 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 F0D8838CFEF; Fri, 3 Apr 2026 11:29:57 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775215798; cv=none; b=WNq073YgCnlRJf6Qt3nWK6idXSTXuzN2FQJCSFlyY5OyhBnRg4Mt9FzgNrkksLiEyXAesQQpRmrkROVXV5747fEVSr+yhqUHdc2316UQWI/u4fsVmlZ2vUmxrZswOLcu2UIsK01qQMOqhXHtLB1nf27dEFHI1bJdqmsRVA9ln0M= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775215798; c=relaxed/simple; bh=maJ5zzm7scL8ZbD0h1YkRJZCs2NsQFvup9oZE1mw5KU=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=MzivNMeecDKabkEW8VWFGxKa/ahA9ts9sIIKF+6V6nNtDlU9MsP4jFg5YjACfgbUaV3jJlhYBTnbGMwQbBFlTzLQ1LSZAZHuHtHtf7nks6SITWE+DtDq4dAb3XiNVFRVuTj+wxMsJ+pXgkEYabDk0cgOckhFoNkcqcUwlztA2Ww= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=atBA4lWr; 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="atBA4lWr" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 14FC1C2BCB9; Fri, 3 Apr 2026 11:29:54 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1775215796; bh=maJ5zzm7scL8ZbD0h1YkRJZCs2NsQFvup9oZE1mw5KU=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=atBA4lWrFUG40jxyS092CpJFSQhoRlIuWVHwGblZNHRb1tO+LRV7vXCwFH8rF539S Tn8M48Pj9ShR4AOC3bDJy11QjemNmPHiCh+TORZOQtiNzxB7Qfoq05xKWNI/93ytSm Y2TPefhcZq3IP8SMMoyIJluAfKCXHWO/5EiNK3xSuPfUk7XYfGO3wU13YvII8vhWcs T9HYfYKjme8kolqb+mtYDK81GNPufnqjHICHaJowXBXert69C06TUUWjp78YKgnKAV p+4g720N5rSx1FcAnd0gQRm4RAo8xntdAZ4b6ROhXkJcalU06AWtFUCnCX1IacG2a9 wpdX8Q/gAxfMg== From: "Matthieu Baerts (NGI0)" Date: Fri, 03 Apr 2026 13:29:28 +0200 Subject: [PATCH net-next 2/5] mptcp: preserve MSG_EOR semantics in sendmsg path 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: <20260403-net-next-mptcp-msg_eor-misc-v1-2-b0b33bea3fed@kernel.org> References: <20260403-net-next-mptcp-msg_eor-misc-v1-0-b0b33bea3fed@kernel.org> In-Reply-To: <20260403-net-next-mptcp-msg_eor-misc-v1-0-b0b33bea3fed@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)" , Gang Yan X-Mailer: b4 0.15.1 X-Developer-Signature: v=1; a=openpgp-sha256; l=3256; i=matttbe@kernel.org; h=from:subject:message-id; bh=zyCtjJLAzhx558xwpPbkO4CJxWTtK4YZSUOCvm+2gtE=; b=owGbwMvMwCVWo/Th0Gd3rumMp9WSGDLPL1m91t7Q6pXc44bJ2XP6f4scnKgWJnPI4kSR1PuVd 9UXzLWN6ChlYRDjYpAVU2SRbovMn/m8irfEy88CZg4rE8gQBi5OAZjIe25GhhOfVptqbehjW7y6 pznkw3HBkyxb9sbl/tjyOiP/j1zps8sM/zOfNF/64rmeMeT++acODo7rYp0aKt4/Ybt958b//G3 tV5kA X-Developer-Key: i=matttbe@kernel.org; a=openpgp; fpr=E8CB85F76877057A6E27F77AF6B7824F4269A073 From: Gang Yan Extend MPTCP's sendmsg handling to recognize and honor the MSG_EOR flag, which marks the end of a record for application-level message boundaries. Data fragments tagged with MSG_EOR are explicitly marked in the mptcp_data_frag structure and skb context to prevent unintended coalescing with subsequent data chunks. This ensures the intent of applications using MSG_EOR is preserved across MPTCP subflows, maintaining consistent message segmentation behavior. Signed-off-by: Gang Yan Reviewed-by: Matthieu Baerts (NGI0) Signed-off-by: Matthieu Baerts (NGI0) --- net/mptcp/protocol.c | 24 +++++++++++++++++++++--- net/mptcp/protocol.h | 2 +- 2 files changed, 22 insertions(+), 4 deletions(-) diff --git a/net/mptcp/protocol.c b/net/mptcp/protocol.c index 79315e575d07..e21e416cd19a 100644 --- a/net/mptcp/protocol.c +++ b/net/mptcp/protocol.c @@ -1005,7 +1005,8 @@ static bool mptcp_frag_can_collapse_to(const struct m= ptcp_sock *msk, const struct page_frag *pfrag, const struct mptcp_data_frag *df) { - return df && pfrag->page =3D=3D df->page && + return df && !df->eor && + pfrag->page =3D=3D df->page && pfrag->size - pfrag->offset > 0 && pfrag->offset =3D=3D (df->offset + df->data_len) && df->data_seq + df->data_len =3D=3D msk->write_seq; @@ -1147,6 +1148,7 @@ mptcp_carve_data_frag(const struct mptcp_sock *msk, s= truct page_frag *pfrag, dfrag->offset =3D offset + sizeof(struct mptcp_data_frag); dfrag->already_sent =3D 0; dfrag->page =3D pfrag->page; + dfrag->eor =3D 0; =20 return dfrag; } @@ -1408,6 +1410,13 @@ static int mptcp_sendmsg_frag(struct sock *sk, struc= t sock *ssk, mptcp_update_infinite_map(msk, ssk, mpext); trace_mptcp_sendmsg_frag(mpext); mptcp_subflow_ctx(ssk)->rel_write_seq +=3D copy; + + /* if this is the last chunk of a dfrag with MSG_EOR set, + * mark the skb to prevent coalescing with subsequent data. + */ + if (dfrag->eor && info->sent + copy >=3D dfrag->data_len) + TCP_SKB_CB(skb)->eor =3D 1; + return copy; } =20 @@ -1868,7 +1877,8 @@ static int mptcp_sendmsg(struct sock *sk, struct msgh= dr *msg, size_t len) long timeo; =20 /* silently ignore everything else */ - msg->msg_flags &=3D MSG_MORE | MSG_DONTWAIT | MSG_NOSIGNAL | MSG_FASTOPEN; + msg->msg_flags &=3D MSG_MORE | MSG_DONTWAIT | MSG_NOSIGNAL | + MSG_FASTOPEN | MSG_EOR; =20 lock_sock(sk); =20 @@ -1975,8 +1985,16 @@ static int mptcp_sendmsg(struct sock *sk, struct msg= hdr *msg, size_t len) goto do_error; } =20 - if (copied) + if (copied) { + /* mark the last dfrag with EOR if MSG_EOR was set */ + if (msg->msg_flags & MSG_EOR) { + struct mptcp_data_frag *dfrag =3D mptcp_pending_tail(sk); + + if (dfrag) + dfrag->eor =3D 1; + } __mptcp_push_pending(sk, msg->msg_flags); + } =20 out: release_sock(sk); diff --git a/net/mptcp/protocol.h b/net/mptcp/protocol.h index 02031007100b..1208f317ac33 100644 --- a/net/mptcp/protocol.h +++ b/net/mptcp/protocol.h @@ -264,7 +264,7 @@ struct mptcp_data_frag { u16 data_len; u16 offset; u8 overhead; - u8 __unused; + u8 eor; /* currently using 1 bit */ u16 already_sent; struct page *page; }; --=20 2.53.0 From nobody Sat Apr 11 11:23:26 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 630B43AF67D; Fri, 3 Apr 2026 11:30:00 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775215800; cv=none; b=P3YsQPNhgiVBebBrYBkC7r/rjXtrcJpb6OyHasPlS11+NEW58m6Pvefv/xAzk8IYUeSOLHMyRcHtTdA6eQ6FtNvvtUECSY14x2/jBOiuAvm4QWx97pqk+rihqxkB/Bw0M79FoccTha+qUrA4o6bQmNcSEIAhIkPrUuA01dhLqNU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775215800; c=relaxed/simple; bh=1OnAPENA2MFXmmi1fleaN8fDNv5hNv73y70P39B3O0A=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=lo2C/icXZcb4b1LgZ/j9O6odo/fODrqUZGPMQbCrg8HhKYuMYbzNOaNwfGJIhYKr2oIsbUo/EbYtmXK6v7zRlmlRIksb/TG5Z6Jvyb1v4f7q4HCxDmoiAlndAf+/SIWeBJXxNixA1KT06XJXdVzsRacLr659t2TsjyrPqYRpayQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=WKwhqtuC; 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="WKwhqtuC" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 50873C19424; Fri, 3 Apr 2026 11:29:57 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1775215799; bh=1OnAPENA2MFXmmi1fleaN8fDNv5hNv73y70P39B3O0A=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=WKwhqtuCxfDBmUIWyFVeqJg+aWV829JhYhOzsJ/WlyfV3fZrYXY67EqoyaeSrLrat z7ECfxn51FaMirwGQRa75BEtJ2nGab9kwz450unzVdEEj1xfBgzyXVJackvsWMbOe0 1p9Lim5pw7PHBXXYxxsyfZ2s3rWsaZMGo5NVR9g1VDfyrdwO9CyHXn9JoUTG9WUB6C UwjbRxn81TbKZbu8Rn5j2A5E0JUQ2/h7UqoxUmt+CgRtvVZYHJfg70iirxvF5/hNef Rb8XismDdsCqLXlGcGYcgeGGqPAPQi/eiST55RHT9qH6WIiQ6hevZqs0ja8wr8b26O +vgF8WYF4oXWQ== From: "Matthieu Baerts (NGI0)" Date: Fri, 03 Apr 2026 13:29:29 +0200 Subject: [PATCH net-next 3/5] tcp: add recv_should_stop helper 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: <20260403-net-next-mptcp-msg_eor-misc-v1-3-b0b33bea3fed@kernel.org> References: <20260403-net-next-mptcp-msg_eor-misc-v1-0-b0b33bea3fed@kernel.org> In-Reply-To: <20260403-net-next-mptcp-msg_eor-misc-v1-0-b0b33bea3fed@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)" , Neal Cardwell , Kuniyuki Iwashima , David Ahern , Geliang Tang X-Mailer: b4 0.15.1 X-Developer-Signature: v=1; a=openpgp-sha256; l=3026; i=matttbe@kernel.org; h=from:subject:message-id; bh=RqCCycHW2v6owPV/xj3gdIsfqbGE+49RDNfHEJrfcLY=; b=owGbwMvMwCVWo/Th0Gd3rumMp9WSGDLPL1kd/Suu86QCR83OhBdTauySTm1O7Hq7SzVX9VHkE Yab9ZyOHaUsDGJcDLJiiizSbZH5M59X8ZZ4+VnAzGFlAhnCwMUpABOR3cjwPzZxm9c24RlH/v1O 9hRuuNP5/NiZR5vD6qfyeBluUffY9IqRoetbulJAopJsvdDUBoYvUSxhfxinHF5+zdit6W5woXE bMwA= X-Developer-Key: i=matttbe@kernel.org; a=openpgp; fpr=E8CB85F76877057A6E27F77AF6B7824F4269A073 From: Geliang Tang Factor out a new helper tcp_recv_should_stop() from tcp_recvmsg_locked() and tcp_splice_read() to check whether to stop receiving. And use this helper in mptcp_recvmsg() and mptcp_splice_read() to reduce redundant code. Suggested-by: Paolo Abeni Acked-by: Mat Martineau Signed-off-by: Geliang Tang Acked-by: Matthieu Baerts (NGI0) Signed-off-by: Matthieu Baerts (NGI0) --- To: Neal Cardwell To: Kuniyuki Iwashima To: David Ahern --- include/net/tcp.h | 8 ++++++++ net/ipv4/tcp.c | 9 ++------- net/mptcp/protocol.c | 11 +++-------- 3 files changed, 13 insertions(+), 15 deletions(-) diff --git a/include/net/tcp.h b/include/net/tcp.h index 565943c34b7e..6156d1d068e1 100644 --- a/include/net/tcp.h +++ b/include/net/tcp.h @@ -3077,4 +3077,12 @@ enum skb_drop_reason tcp_inbound_hash(struct sock *s= k, const void *saddr, const void *daddr, int family, int dif, int sdif); =20 +static inline int tcp_recv_should_stop(struct sock *sk) +{ + return sk->sk_err || + sk->sk_state =3D=3D TCP_CLOSE || + (sk->sk_shutdown & RCV_SHUTDOWN) || + signal_pending(current); +} + #endif /* _TCP_H */ diff --git a/net/ipv4/tcp.c b/net/ipv4/tcp.c index bd2c3c4587e1..e57eaffc007a 100644 --- a/net/ipv4/tcp.c +++ b/net/ipv4/tcp.c @@ -888,9 +888,7 @@ ssize_t tcp_splice_read(struct socket *sock, loff_t *pp= os, release_sock(sk); lock_sock(sk); =20 - if (sk->sk_err || sk->sk_state =3D=3D TCP_CLOSE || - (sk->sk_shutdown & RCV_SHUTDOWN) || - signal_pending(current)) + if (tcp_recv_should_stop(sk)) break; } =20 @@ -2755,10 +2753,7 @@ static int tcp_recvmsg_locked(struct sock *sk, struc= t msghdr *msg, size_t len, =20 if (copied) { if (!timeo || - sk->sk_err || - sk->sk_state =3D=3D TCP_CLOSE || - (sk->sk_shutdown & RCV_SHUTDOWN) || - signal_pending(current)) + tcp_recv_should_stop(sk)) break; } else { if (sock_flag(sk, SOCK_DONE)) diff --git a/net/mptcp/protocol.c b/net/mptcp/protocol.c index e21e416cd19a..2f4776a4f06a 100644 --- a/net/mptcp/protocol.c +++ b/net/mptcp/protocol.c @@ -2333,11 +2333,8 @@ static int mptcp_recvmsg(struct sock *sk, struct msg= hdr *msg, size_t len, break; =20 if (copied) { - if (sk->sk_err || - sk->sk_state =3D=3D TCP_CLOSE || - (sk->sk_shutdown & RCV_SHUTDOWN) || - !timeo || - signal_pending(current)) + if (tcp_recv_should_stop(sk) || + !timeo) break; } else { if (sk->sk_err) { @@ -4520,9 +4517,7 @@ static ssize_t mptcp_splice_read(struct socket *sock,= loff_t *ppos, release_sock(sk); lock_sock(sk); =20 - if (sk->sk_err || sk->sk_state =3D=3D TCP_CLOSE || - (sk->sk_shutdown & RCV_SHUTDOWN) || - signal_pending(current)) + if (tcp_recv_should_stop(sk)) break; } =20 --=20 2.53.0 From nobody Sat Apr 11 11:23:26 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 1A4B431F99D; Fri, 3 Apr 2026 11:30:02 +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=1775215803; cv=none; b=marzpDzc6dqQF0TlB9hDcJYZ1bN2K5HM6rMCkUdLPMFjgbxo/TeoiSa3oF2odf9Go6lEiEgKISRLNCEFV37r/1rV6iocIOG6bm5TSCOq5wSKSfOfcVpPYnLyAv31zZ0q8r3FKNb7ad8MNJkYXe2PDoga9XS+m6q9YVwwpprmWqc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775215803; c=relaxed/simple; bh=Ws960Ue/zmcX7kdTuXX1aczhyesgjt82Y+UPAyP6JlQ=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=BF50ZMF9I6Rc619Mcd/9FxjoQbfwYVsIvsrgrgQsob07pHTgnEDi8PTp/HOhP/dLQpzxpfe1xmCC2/mGaULxswtmkYFK2orEYR2HBgoDa95MpEkGG/gVYfmB18xKkByIKj9rfvM33onVU4N7IqY+lABtfFpIvrCaq9F69fNz7uQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=F6MxUSLV; 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="F6MxUSLV" Received: by smtp.kernel.org (Postfix) with ESMTPSA id D3D7DC19423; Fri, 3 Apr 2026 11:29:59 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1775215801; bh=Ws960Ue/zmcX7kdTuXX1aczhyesgjt82Y+UPAyP6JlQ=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=F6MxUSLVaHNC2iTujCJ4ovks4WNWj8lVvkO9gN3sVyix/qFypX8s89mFSfOrCkyLa 3ZYs4+53irOXCnX4PIuKVZnlmaahS/H08CJQA4NOt0M/DMvfndBQtrta0HDSei9AC1 XknKA73stIFQy5CLJzooP3FCElwg5QdlHKbd++j3k/M7R7Nkyn0dAmq9SonWA4zpFJ iit15huOWEsKEA6AZSy+YL4Wt7y08H6f6tMpxkgLrD5aDzlh9uJyIWx+F3T1xp4h2c 1mqH443N9NVW/qCHgwrtO34G6jrFKvXKaUIsFnV+ckNeAKQoF2tfzQxA+npo3D7FRF 75Q3mNWci1Q1Q== From: "Matthieu Baerts (NGI0)" Date: Fri, 03 Apr 2026 13:29:30 +0200 Subject: [PATCH net-next 4/5] mptcp: pm: in-kernel: remove mptcp_pm_has_addr_attr_id 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: <20260403-net-next-mptcp-msg_eor-misc-v1-4-b0b33bea3fed@kernel.org> References: <20260403-net-next-mptcp-msg_eor-misc-v1-0-b0b33bea3fed@kernel.org> In-Reply-To: <20260403-net-next-mptcp-msg_eor-misc-v1-0-b0b33bea3fed@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.15.1 X-Developer-Signature: v=1; a=openpgp-sha256; l=2965; i=matttbe@kernel.org; h=from:subject:message-id; bh=Ws960Ue/zmcX7kdTuXX1aczhyesgjt82Y+UPAyP6JlQ=; b=owGbwMvMwCVWo/Th0Gd3rumMp9WSGDLPL1kjWTR17aT35/xKEg+9zFxy5vRnswfPZNbYbVrYM zFUdHccd0cpC4MYF4OsmCKLdFtk/sznVbwlXn4WMHNYmUCGMHBxCsBE1uUxMhxZfJXXp8lAXkja MCmaO7XTSuNEwNR4Qb+5ZXNUnzEWKzMyvPu1w2GmXPYW0/y6R5fktfcqazYfsZD6IGXGeehZqnw FLwA= X-Developer-Key: i=matttbe@kernel.org; a=openpgp; fpr=E8CB85F76877057A6E27F77AF6B7824F4269A073 There is no need to call this helper: it will check if the address ID attribute is set, but this attribute has already been parsed previously. Indeed, the value has been set in 'entry->addr.id' if it was set and positive, which is what we were looking at. Then only looking at this already parsed value is enough, not need to re-extract all Netlink attributes again. Reviewed-by: Geliang Tang Signed-off-by: Matthieu Baerts (NGI0) --- net/mptcp/pm_kernel.c | 24 +++++------------------- 1 file changed, 5 insertions(+), 19 deletions(-) diff --git a/net/mptcp/pm_kernel.c b/net/mptcp/pm_kernel.c index 82e59f9c6dd9..0ebf43be9939 100644 --- a/net/mptcp/pm_kernel.c +++ b/net/mptcp/pm_kernel.c @@ -720,7 +720,7 @@ static void __mptcp_pm_release_addr_entry(struct mptcp_= pm_addr_entry *entry) =20 static int mptcp_pm_nl_append_new_local_addr(struct pm_nl_pernet *pernet, struct mptcp_pm_addr_entry *entry, - bool needs_id, bool replace) + bool replace) { struct mptcp_pm_addr_entry *cur, *del_entry =3D NULL; int ret =3D -EINVAL; @@ -779,7 +779,7 @@ static int mptcp_pm_nl_append_new_local_addr(struct pm_= nl_pernet *pernet, } } =20 - if (!entry->addr.id && needs_id) { + if (!entry->addr.id) { find_next: entry->addr.id =3D find_next_zero_bit(pernet->id_bitmap, MPTCP_PM_MAX_ADDR_ID + 1, @@ -790,7 +790,7 @@ static int mptcp_pm_nl_append_new_local_addr(struct pm_= nl_pernet *pernet, } } =20 - if (!entry->addr.id && needs_id) + if (!entry->addr.id) goto out; =20 __set_bit(entry->addr.id, pernet->id_bitmap); @@ -923,7 +923,7 @@ int mptcp_pm_nl_get_local_id(struct mptcp_sock *msk, return -ENOMEM; =20 entry->addr.port =3D 0; - ret =3D mptcp_pm_nl_append_new_local_addr(pernet, entry, true, false); + ret =3D mptcp_pm_nl_append_new_local_addr(pernet, entry, false); if (ret < 0) kfree(entry); =20 @@ -977,18 +977,6 @@ static int mptcp_nl_add_subflow_or_signal_addr(struct = net *net, return 0; } =20 -static bool mptcp_pm_has_addr_attr_id(const struct nlattr *attr, - struct genl_info *info) -{ - struct nlattr *tb[MPTCP_PM_ADDR_ATTR_MAX + 1]; - - if (!nla_parse_nested_deprecated(tb, MPTCP_PM_ADDR_ATTR_MAX, attr, - mptcp_pm_address_nl_policy, info->extack) && - tb[MPTCP_PM_ADDR_ATTR_ID]) - return true; - return false; -} - /* Add an MPTCP endpoint */ int mptcp_pm_nl_add_addr_doit(struct sk_buff *skb, struct genl_info *info) { @@ -1037,9 +1025,7 @@ int mptcp_pm_nl_add_addr_doit(struct sk_buff *skb, st= ruct genl_info *info) goto out_free; } } - ret =3D mptcp_pm_nl_append_new_local_addr(pernet, entry, - !mptcp_pm_has_addr_attr_id(attr, info), - true); + ret =3D mptcp_pm_nl_append_new_local_addr(pernet, entry, true); if (ret < 0) { GENL_SET_ERR_MSG_FMT(info, "too many addresses or duplicate one: %d", re= t); goto out_free; --=20 2.53.0 From nobody Sat Apr 11 11:23:26 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 AF7BA3B9D83; Fri, 3 Apr 2026 11:30:05 +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=1775215805; cv=none; b=QK4G0p0oywmyXshHAjCL5n+cTKXW4CuX1m4rshrtZ9mhOJAs1T/Dizqo3Gx71k/3UU7lqv0oyTorkiu3/k+mdLRmzOZl21tllRM1IjhsuvzPR05Nasztj48JaoH9EtBua6syl7kbQmargu43x5UMsV9SHEkV58y5pxpzRhz78ho= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775215805; c=relaxed/simple; bh=1U9CpO9IcrE/wfz3Fu40rYUyicZz0UNASAZJ2T7Ehuo=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=WTro4J1vKCgRfg+vMTdT5hJKbCyhLMlW0oXanLBjk9DdvYDPjzJ7IlR7yOmipwEAx/mdOJszrxzWfTjKml+ipehKGIpBha2H/bHPtiVLql8Ce50VjrotQ6Zz/N8OGOnsUXGDp8EiohJGA5K0B9JBRvg4nn87cguAPfNGs+C5hpQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=aVFf1yAt; 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="aVFf1yAt" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 07F98C19424; Fri, 3 Apr 2026 11:30:01 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1775215804; bh=1U9CpO9IcrE/wfz3Fu40rYUyicZz0UNASAZJ2T7Ehuo=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=aVFf1yAt5k/OC59vcjG9JlziHFdaDVCxx6un69QFmitMawRWREhh73WlTv6ed+Hw7 KNB5/WiW84ZOCcTc5od64yr2o4yYPRivDYEqsLWl/8AqHY/Cg17SqdNs67Ojocu2zf WpEingwxH3owJf1QiBe5ulO6KYyMTICtOyt4Nvo9qiXMvwaPIOF0j9q5UxS/GQPdFw hX28v83AL98BLiu9Fv0M0+3rKFTrYMhrMkfj+Uf5IX+exIm7UL0tJAr2M+oR7tiBJ+ CNVfphEKv92BUwqyow18vgCPC8y+Ee9NOVOyyikbNQjzJkU74U2k9hooUbRcCq85/Y CA32Am9WehC5Q== From: "Matthieu Baerts (NGI0)" Date: Fri, 03 Apr 2026 13:29:31 +0200 Subject: [PATCH net-next 5/5] selftests: mptcp: join: recreate signal endp with same ID 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: <20260403-net-next-mptcp-msg_eor-misc-v1-5-b0b33bea3fed@kernel.org> References: <20260403-net-next-mptcp-msg_eor-misc-v1-0-b0b33bea3fed@kernel.org> In-Reply-To: <20260403-net-next-mptcp-msg_eor-misc-v1-0-b0b33bea3fed@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.15.1 X-Developer-Signature: v=1; a=openpgp-sha256; l=1725; i=matttbe@kernel.org; h=from:subject:message-id; bh=1U9CpO9IcrE/wfz3Fu40rYUyicZz0UNASAZJ2T7Ehuo=; b=owGbwMvMwCVWo/Th0Gd3rumMp9WSGDLPL1lrfYSni3+RQ57JF56DGrU++2ef2F1/T/ekYLHP+ od8B/Ybd5SyMIhxMciKKbJIt0Xmz3xexVvi5WcBM4eVCWQIAxenAEzETZHhf3ne+nVLDmiLn/bM fMjKL+v4PqeiwTTlpO/ctw/jbxb84GFkOKcg/1bSz8RgEoOzrxd7963UVZ/0b/de+XjlaNbfV3b hfAA= X-Developer-Key: i=matttbe@kernel.org; a=openpgp; fpr=E8CB85F76877057A6E27F77AF6B7824F4269A073 In this "delete re-add signal" MPTCP Join subtest, the endpoint linked to the initial subflow is removed, but readded once with different ID. It appears that there was an issue when reusing the same ID, recently fixed by commit d191101dee25 ("mptcp: pm: in-kernel: always set ID as avail when rm endp"). The test then now reuses the same ID the first time, but continue to use another one (88) the second time. This should then cover more cases. Closes: https://github.com/multipath-tcp/mptcp_net-next/issues/615 Reviewed-by: Geliang Tang Signed-off-by: Matthieu Baerts (NGI0) --- To: Shuah Khan Cc: linux-kselftest@vger.kernel.org --- tools/testing/selftests/net/mptcp/mptcp_join.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tools/testing/selftests/net/mptcp/mptcp_join.sh b/tools/testin= g/selftests/net/mptcp/mptcp_join.sh index a3144d7298a5..beec41f6662a 100755 --- a/tools/testing/selftests/net/mptcp/mptcp_join.sh +++ b/tools/testing/selftests/net/mptcp/mptcp_join.sh @@ -4343,13 +4343,13 @@ endpoint_tests() chk_mptcp_info add_addr_signal 2 add_addr_accepted 2 [ ${ipt} =3D 1 ] && ip netns exec "${ns1}" ${iptables} -D OUTPUT 1 =20 - pm_nl_add_endpoint $ns1 10.0.1.1 id 99 flags signal + pm_nl_add_endpoint $ns1 10.0.1.1 id 42 flags signal wait_mpj 4 chk_subflow_nr "after re-add ID 0" 3 chk_mptcp_info subflows 3 subflows 3 chk_mptcp_info add_addr_signal 3 add_addr_accepted 2 =20 - pm_nl_del_endpoint $ns1 99 10.0.1.1 + pm_nl_del_endpoint $ns1 42 10.0.1.1 sleep 0.5 chk_subflow_nr "after re-delete ID 0" 2 chk_mptcp_info subflows 2 subflows 2 --=20 2.53.0