October 28, 2025 at 19:30, "Paolo Abeni" <pabeni@redhat.com mailto:pabeni@redhat.com?to=%22Paolo%20Abeni%22%20%3Cpabeni%40redhat.com%3E > wrote:
On 10/23/25 2:54 PM, Jiayuan Chen wrote:
When the server has MPTCP enabled but receives a non-MP-capable request from a client, it calls mptcp_fallback_tcp_ops(). Since non-MPTCP connections are allowed to use sockmap, which replaces sk->sk_prot, using sk->sk_prot to determine the IP version in mptcp_fallback_tcp_ops() becomes unreliable. This can lead to assigning incorrect ops to sk->sk_socket->ops.
I don't see how sockmap could modify the to-be-accepted socket sk_prot before mptcp_fallback_tcp_ops(), as such call happens before the fd is installed, and AFAICS sockmap can only fetch sockets via fds.
Is this patch needed?
"mptcp_fallback_tcp_ops" is only called during the accept process. However, before that, for an already established TCP socket, its sk_prot is replaced via the following path: tcp_rcv_state_process() tcp_init_transfer(BPF_SOCK_OPS_PASSIVE_ESTABLISHED_CB) call bpf prog bpf_sock_map_update(sk) tcp_bpf_update_proto()
However, after discussing with Matthieu, we've concluded that this patch is indeed no longer necessary, as we have a simpler way to intercept the operation."
Thanks~