+++ /dev/null
-From fcf04b14334641f4b0b8647824480935e9416d52 Mon Sep 17 00:00:00 2001
-From: Gang Yan <yangang@kylinos.cn>
-Date: Mon, 20 Apr 2026 18:19:23 +0200
-Subject: mptcp: sync the msk->sndbuf at accept() time
-
-From: Gang Yan <yangang@kylinos.cn>
-
-commit fcf04b14334641f4b0b8647824480935e9416d52 upstream.
-
-On passive MPTCP connections, the msk sndbuf is not updated correctly.
-
-The root cause is an order issue in the accept path:
-
-- tcp_check_req() -> subflow_syn_recv_sock() -> mptcp_sk_clone_init()
- calls __mptcp_propagate_sndbuf() to copy the ssk sndbuf into msk
-
-- Later, tcp_child_process() -> tcp_init_transfer() ->
- tcp_sndbuf_expand() grows the ssk sndbuf.
-
-So __mptcp_propagate_sndbuf() runs before the ssk sndbuf has been
-expanded and the msk ends up with a much smaller sndbuf than the
-subflow:
-
- MPTCP: msk->sndbuf:20480, msk->first->sndbuf:2626560
-
-Fix this by moving the __mptcp_propagate_sndbuf() call from
-mptcp_sk_clone_init() -- the ssk sndbuf is not yet finalized there -- to
-__mptcp_propagate_sndbuf() at accept() time, when the ssk sndbuf has
-been fully expanded by tcp_sndbuf_expand().
-
-Fixes: 8005184fd1ca ("mptcp: refactor sndbuf auto-tuning")
-Cc: stable@vger.kernel.org
-Closes: https://github.com/multipath-tcp/mptcp_net-next/issues/602
-Signed-off-by: Gang Yan <yangang@kylinos.cn>
-Acked-by: Paolo Abeni <pabeni@redhat.com>
-Reviewed-by: Matthieu Baerts (NGI0) <matttbe@kernel.org>
-Signed-off-by: Matthieu Baerts (NGI0) <matttbe@kernel.org>
-Link: https://patch.msgid.link/20260420-net-mptcp-sync-sndbuf-accept-v1-1-e3523e3aeb44@kernel.org
-Signed-off-by: Paolo Abeni <pabeni@redhat.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
----
- net/mptcp/protocol.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
---- a/net/mptcp/protocol.c
-+++ b/net/mptcp/protocol.c
-@@ -3428,7 +3428,6 @@ struct sock *mptcp_sk_clone_init(const s
- * uses the correct data
- */
- mptcp_copy_inaddrs(nsk, ssk);
-- __mptcp_propagate_sndbuf(nsk, ssk);
-
- mptcp_rcv_space_init(msk, ssk);
- msk->rcvq_space.time = mptcp_stamp();
-@@ -4038,6 +4037,7 @@ static int mptcp_stream_accept(struct so
- }
-
- mptcp_rps_record_subflows(msk);
-+ __mptcp_propagate_sndbuf(newsk, mptcp_subflow_tcp_sock(subflow));
-
- /* Do late cleanup for the first subflow as necessary. Also
- * deal with bad peers not doing a complete shutdown.