• Paolo Abeni's avatar
    net: ipv6: keep sk status consistent after datagram connect failure · 2f987a76
    Paolo Abeni authored
    On unsuccesful ip6_datagram_connect(), if the failure is caused by
    ip6_datagram_dst_update(), the sk peer information are cleared, but
    the sk->sk_state is preserved.
    
    If the socket was already in an established status, the overall sk
    status is inconsistent and fouls later checks in datagram code.
    
    Fix this saving the old peer information and restoring them in
    case of failure. This also aligns ipv6 datagram connect() behavior
    with ipv4.
    
    v1 -> v2:
     - added missing Fixes tag
    
    Fixes: 85cb73ff ("net: ipv6: reset daddr and dport in sk if connect() fails")
    Signed-off-by: default avatarPaolo Abeni <pabeni@redhat.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    2f987a76
datagram.c 24.9 KB