• Paolo Abeni's avatar
    mptcp: cope better with MP_JOIN failure · 729cd643
    Paolo Abeni authored
    Currently, on MP_JOIN failure we reset the child
    socket, but leave the request socket untouched.
    
    tcp_check_req will deal with it according to the
    'tcp_abort_on_overflow' sysctl value - by default the
    req socket will stay alive.
    
    The above leads to inconsistent behavior on MP JOIN
    failure, and bad listener overflow accounting.
    
    This patch addresses the issue leveraging the infrastructure
    just introduced to ask the TCP stack to drop the req on
    failure.
    
    The child socket is not freed anymore by subflow_syn_recv_sock(),
    instead it's moved to a dead state and will be disposed by the
    next sock_put done by the TCP stack, so that listener overflow
    accounting is not affected by MP JOIN failure.
    Signed-off-by: default avatarPaolo Abeni <pabeni@redhat.com>
    Reviewed-by: default avatarChristoph Paasch <cpaasch@apple.com>
    Reviewed-by: default avatarMat Martineau <mathew.j.martineau@linux.intel.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    729cd643
subflow.c 32.9 KB