• Eric Dumazet's avatar
    tcp: drop dst in tcp_add_backlog() · ade9628e
    Eric Dumazet authored
    Under stress, softirq rx handler often hits a socket owned by the user,
    and has to queue the packet into socket backlog.
    
    When this happens, skb dst refcount is taken before we escape rcu
    protected region. This is done from __sk_add_backlog() calling
    skb_dst_force().
    
    Consumer will have to perform the opposite costly operation.
    
    AFAIK nothing in tcp stack requests the dst after skb was stored
    in the backlog. If this was the case, we would have had failures
    already since skb_dst_force() can end up clearing skb dst anyway.
    Signed-off-by: default avatarEric Dumazet <edumazet@google.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    ade9628e
tcp_ipv4.c 68.4 KB