Netdev List
 help / color / mirror / Atom feed
* [PATCH net] mptcp: pm: kernel: use RCU to free endpoint listeners
@ 2026-11-04 12:53 Eric Dumazet
  2026-11-04 12:59 ` netdev-bot+sinfo
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: Eric Dumazet @ 2026-11-04 12:53 UTC (permalink / raw)
  To: David S . Miller, Jakub Kicinski, Paolo Abeni, Matthieu Baerts,
	Mat Martineau, Geliang Tang
  Cc: Simon Horman, Kuniyuki Iwashima, netdev, Kyle Zeng, stable,
	Eric Dumazet

From: Kyle Zeng <kylebot@openai.com>

mptcp_pm_nl_create_listen_socket() starts the TCP listener directly
instead of going through mptcp_listen(). It consequently misses setting
SOCK_RCU_FREE on the parent MPTCP socket.

tcp_child_process() can invoke the listener's subflow_data_ready()
callback without holding the MPTCP parent lock or a reference to the
parent. An authenticated MP_JOIN racing with endpoint teardown can
therefore access the parent after its last reference has been dropped.
The ADD_ADDR error path can also close an already published listener.

Set SOCK_RCU_FREE before __inet_listen_sk() publishes the TCP listener,
matching mptcp_listen(). This protects the parent on every subsequent
close path, including a failed endpoint addition.

Fixes: 1729cf186d8a ("mptcp: create the listening socket for new port")
Cc: stable@vger.kernel.org
Signed-off-by: Kyle Zeng <kylebot@openai.com>
Signed-off-by: Eric Dumazet <edumazet@kernel.org>
---
 net/mptcp/pm_kernel.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/net/mptcp/pm_kernel.c b/net/mptcp/pm_kernel.c
index 1a7750813235..f7396628490e 100644
--- a/net/mptcp/pm_kernel.c
+++ b/net/mptcp/pm_kernel.c
@@ -906,6 +906,7 @@ static int mptcp_pm_nl_create_listen_socket(struct sock *sk,
 	 * old status is known (TCP_CLOSE).
 	 */
 	inet_sk_state_store(newsk, TCP_LISTEN);
+	sock_set_flag(newsk, SOCK_RCU_FREE);
 	lock_sock(ssk);
 	WRITE_ONCE(mptcp_subflow_ctx(ssk)->pm_listener, true);
 	err = __inet_listen_sk(ssk, backlog);
-- 
2.53.0


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [PATCH net] mptcp: pm: kernel: use RCU to free endpoint listeners
  2026-11-04 12:53 [PATCH net] mptcp: pm: kernel: use RCU to free endpoint listeners Eric Dumazet
@ 2026-11-04 12:59 ` netdev-bot+sinfo
  2026-11-04 15:37 ` Matthieu Baerts
  2026-11-05 14:10 ` patchwork-bot+netdevbpf
  2 siblings, 0 replies; 4+ messages in thread
From: netdev-bot+sinfo @ 2026-11-04 12:59 UTC (permalink / raw)
  To: Eric Dumazet
  Cc: David S . Miller, Jakub Kicinski, Paolo Abeni, Matthieu Baerts,
	Mat Martineau, Geliang Tang, Simon Horman, Kuniyuki Iwashima,
	netdev, Kyle Zeng, stable

Hi!

This is an automated message. This series looks like a fix, but its
commit messages seem to be missing some information:

 - How the issue was discovered, e.g. hit in production, hit during
   development, syzbot report, manual code inspection, LLM or static
   analysis tool scan.

 - Whether the issue was actually triggered, or is only theoretical
   (e.g. found by code inspection). If it was triggered please include
   the symptoms, like the stack trace or error messages.

Please do not repost the series just to address the above. Instead,
reply to this email with the missing information, so that reviewers
can take it into account. If the series needs another revision for
other reasons, please include the information in the commit messages
then.

The evaluation is done by an LLM so it may be wrong, if you think
that is the case please reply and explain.

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH net] mptcp: pm: kernel: use RCU to free endpoint listeners
  2026-11-04 12:53 [PATCH net] mptcp: pm: kernel: use RCU to free endpoint listeners Eric Dumazet
  2026-11-04 12:59 ` netdev-bot+sinfo
@ 2026-11-04 15:37 ` Matthieu Baerts
  2026-11-05 14:10 ` patchwork-bot+netdevbpf
  2 siblings, 0 replies; 4+ messages in thread
From: Matthieu Baerts @ 2026-11-04 15:37 UTC (permalink / raw)
  To: Eric Dumazet
  Cc: David S . Miller, Jakub Kicinski, Paolo Abeni, Mat Martineau,
	Geliang Tang, Simon Horman, Kuniyuki Iwashima, netdev, Kyle Zeng,
	stable

Hi Eric,

On 04/11/2026 13:53, Eric Dumazet wrote:
> From: Kyle Zeng <kylebot@openai.com>
> 
> mptcp_pm_nl_create_listen_socket() starts the TCP listener directly
> instead of going through mptcp_listen(). It consequently misses setting
> SOCK_RCU_FREE on the parent MPTCP socket.
> 
> tcp_child_process() can invoke the listener's subflow_data_ready()
> callback without holding the MPTCP parent lock or a reference to the
> parent. An authenticated MP_JOIN racing with endpoint teardown can
> therefore access the parent after its last reference has been dropped.
> The ADD_ADDR error path can also close an already published listener.
> 
> Set SOCK_RCU_FREE before __inet_listen_sk() publishes the TCP listener,
> matching mptcp_listen(). This protects the parent on every subsequent
> close path, including a failed endpoint addition.

Thank you for the patch! But it looks like Kyle already sent it earlier
to the same list:

https://lore.kernel.org/20261030042255.74216-1-kylebot@openai.com

Probably best to drop this one here?

(It's not clear what PW state we want to set for this case)

Cheers,
Matt
-- 
Sponsored by the NGI0 Core fund.


^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH net] mptcp: pm: kernel: use RCU to free endpoint listeners
  2026-11-04 12:53 [PATCH net] mptcp: pm: kernel: use RCU to free endpoint listeners Eric Dumazet
  2026-11-04 12:59 ` netdev-bot+sinfo
  2026-11-04 15:37 ` Matthieu Baerts
@ 2026-11-05 14:10 ` patchwork-bot+netdevbpf
  2 siblings, 0 replies; 4+ messages in thread
From: patchwork-bot+netdevbpf @ 2026-11-05 14:10 UTC (permalink / raw)
  To: Eric Dumazet
  Cc: davem, kuba, pabeni, matttbe, martineau, geliang, horms, kuniyu,
	netdev, kylebot, stable

Hello:

This patch was applied to netdev/net.git (main)
by Paolo Abeni <pabeni@redhat.com>:

On Wed,  4 Nov 2026 13:53:27 +0100 you wrote:
> From: Kyle Zeng <kylebot@openai.com>
> 
> mptcp_pm_nl_create_listen_socket() starts the TCP listener directly
> instead of going through mptcp_listen(). It consequently misses setting
> SOCK_RCU_FREE on the parent MPTCP socket.
> 
> tcp_child_process() can invoke the listener's subflow_data_ready()
> callback without holding the MPTCP parent lock or a reference to the
> parent. An authenticated MP_JOIN racing with endpoint teardown can
> therefore access the parent after its last reference has been dropped.
> The ADD_ADDR error path can also close an already published listener.
> 
> [...]

Here is the summary with links:
  - [net] mptcp: pm: kernel: use RCU to free endpoint listeners
    https://git.kernel.org/netdev/net/c/49b09ae0bf57

You are awesome, thank you!
-- 
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/patchwork/pwbot.html



^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2026-11-05 14:10 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-11-04 12:53 [PATCH net] mptcp: pm: kernel: use RCU to free endpoint listeners Eric Dumazet
2026-11-04 12:59 ` netdev-bot+sinfo
2026-11-04 15:37 ` Matthieu Baerts
2026-11-05 14:10 ` patchwork-bot+netdevbpf

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox