• Florian Westphal's avatar
    mptcp: replace mptcp_disconnect with a stub · 42c556fe
    Florian Westphal authored
    Paolo points out that mptcp_disconnect is bogus:
    "lock_sock(sk);
    looks suspicious (lock should be already held by the caller)
    And call to: tcp_disconnect(sk, flags); too, sk is not a tcp
    socket".
    
    ->disconnect() gets called from e.g. inet_stream_connect when
    one tries to disassociate a connected socket again (to re-connect
    without closing the socket first).
    MPTCP however uses mptcp_stream_connect, not inet_stream_connect,
    for the mptcp-socket connect call.
    
    inet_stream_connect only gets called indirectly, for the tcp socket,
    so any ->disconnect() calls end up calling tcp_disconnect for that
    tcp subflow sk.
    
    This also explains why syzkaller has not yet reported a problem
    here.  So for now replace this with a stub that doesn't do anything.
    
    Closes: https://github.com/multipath-tcp/mptcp_net-next/issues/14Acked-by: default avatarPaolo Abeni <pabeni@redhat.com>
    Signed-off-by: default avatarFlorian Westphal <fw@strlen.de>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    42c556fe
protocol.c 48 KB