On Wed, 2021-01-20 at 11:40 +0100, Paolo Abeni wrote: > @@ -428,6 +429,7 @@ static int subflow_v4_conn_request(struct sock *sk, > struct sk_buff *skb) > static struct tcp_request_sock_ops subflow_request_sock_ipv6_ops; > static struct inet_connection_sock_af_ops subflow_v6_specific; > static struct inet_connection_sock_af_ops subflow_v6m_specific; > +static struct proto tcpv6_prot_override; > > static int subflow_v6_conn_request(struct sock *sk, struct sk_buff *skb) > { > @@ -509,6 +511,14 @@ static void subflow_ulp_fallback(struct sock *sk, > icsk->icsk_ulp_ops = NULL; > rcu_assign_pointer(icsk->icsk_ulp_data, NULL); > tcp_sk(sk)->is_mptcp = 0; > + > + /* undo override */ > +#if IS_ENABLED(CONFIG_MPTCP_IPV6) > + if (sk->sk_prot == &tcpv6_prot_override) > + sk->sk_prot = &tcpv6_prot; > + else > +#endif > + sk->sk_prot = &tcp_prot;
CI just spotted an UaF due this patch. We need to do the above also at ULP release time. I'll send a v2 soon. Sorry for the noise. Paolo