mptcp: relax check on MPC passive fallback
authorPaolo Abeni <pabeni@redhat.com>
Tue, 16 Jan 2024 17:18:47 +0000 (18:18 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 25 Jan 2024 23:35:59 +0000 (15:35 -0800)
[ Upstream commit c0f5aec28edf98906d28f08daace6522adf9ee7a ]

While testing the blamed commit below, I was able to miss (!)
packetdrill failures in the fastopen test-cases.

On passive fastopen the child socket is created by incoming TCP MPC syn,
allow for both MPC_SYN and MPC_ACK header.

Fixes: 724b00c12957 ("mptcp: refine opt_mp_capable determination")
Reviewed-by: Matthieu Baerts <matttbe@kernel.org>
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
Reviewed-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
net/mptcp/subflow.c

index 70b7a47..d3c5ecf 100644 (file)
@@ -783,7 +783,8 @@ static struct sock *subflow_syn_recv_sock(const struct sock *sk,
                 * options.
                 */
                mptcp_get_options(skb, &mp_opt);
-               if (!(mp_opt.suboptions & OPTION_MPTCP_MPC_ACK))
+               if (!(mp_opt.suboptions &
+                     (OPTION_MPTCP_MPC_SYN | OPTION_MPTCP_MPC_ACK)))
                        fallback = true;
 
        } else if (subflow_req->mp_join) {