diff options
| author | Kyle Zeng <kylebot@openai.com> | 2026-10-29 21:22:55 -0700 |
|---|---|---|
| committer | Paolo Abeni <pabeni@redhat.com> | 2026-11-05 15:01:42 +0100 |
| commit | 49b09ae0bf57b4230187d4cdd0a370558e44a6e8 (patch) | |
| tree | ce5eac15d5225510c288460a9309e427499bd8b7 /include/uapi/linux | |
| parent | 57889a8f6d49fc153aa0017d13086ab736567f8a (diff) | |
mptcp: pm: kernel: use RCU to free endpoint listeners
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>
Reviewed-by: Matthieu Baerts (NGI0) <matttbe@kernel.org>
Link: https://patch.msgid.link/20261030042255.74216-1-kylebot@openai.com
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
Diffstat (limited to 'include/uapi/linux')
0 files changed, 0 insertions, 0 deletions
