[PATCH mptcp-next v2 2/5] mptcp: inherit sk_reuse/sk_reuseport on subflow creation

Geliang Tang <[email protected]> Sun, 26 Jul 2026 16:43:41 +0800
Newsgroups dev.linux.lists.mptcp
Message-ID <650252e8ecf53c9d05aa808f95d7fa0fcf812c14.1785054808.git.tanggeliang@kylinos.cn>
From: Geliang Tang <[email protected]>

Propagate sk_reuse and sk_reuseport from the MPTCP master socket to
newly-created subflows in sync_socket_options(), mirroring how sk_reuse
and sk_reuseport are already handled for the subflow.

Without this, a subflow started after the master toggled SO_REUSEADDR
or SO_REUSEPORT would not inherit the setting, leading to inconsistent
reuse semantics between msk and ssk.

Signed-off-by: Geliang Tang <[email protected]>
---
 net/mptcp/sockopt.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/net/mptcp/sockopt.c b/net/mptcp/sockopt.c
index fcf6feb2a9eb..dc1ef52c2200 100644
--- a/net/mptcp/sockopt.c
+++ b/net/mptcp/sockopt.c
@@ -1601,6 +1601,9 @@ static void sync_socket_options(struct mptcp_sock *msk, struct sock *ssk)
 	inet_assign_bit(FREEBIND, ssk, inet_test_bit(FREEBIND, sk));
 	inet_assign_bit(BIND_ADDRESS_NO_PORT, ssk, inet_test_bit(BIND_ADDRESS_NO_PORT, sk));
 	WRITE_ONCE(inet_sk(ssk)->local_port_range, READ_ONCE(inet_sk(sk)->local_port_range));
+
+	ssk->sk_reuse = sk->sk_reuse;
+	ssk->sk_reuseport = sk->sk_reuseport;
 }
 
 void mptcp_sockopt_sync_locked(struct mptcp_sock *msk, struct sock *ssk)
-- 
2.53.0