• Eric Dumazet's avatar
    tcp: fix possible deadlock in tcp_send_fin() · d83769a5
    Eric Dumazet authored
    Using sk_stream_alloc_skb() in tcp_send_fin() is dangerous in
    case a huge process is killed by OOM, and tcp_mem[2] is hit.
    
    To be able to free memory we need to make progress, so this
    patch allows FIN packets to not care about tcp_mem[2], if
    skb allocation succeeded.
    
    In a follow-up patch, we might abort tcp_send_fin() infinite loop
    in case TIF_MEMDIE is set on this thread, as memory allocator
    did its best getting extra memory already.
    
    This patch reverts d22e1537 ("tcp: fix tcp fin memory accounting")
    
    Fixes: d22e1537 ("tcp: fix tcp fin memory accounting")
    Signed-off-by: default avatarEric Dumazet <edumazet@google.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    d83769a5
tcp_output.c 100 KB