• Jesper Nilsson's avatar
    ipv6: Plug sk_buff leak in ipv6_rcv (net/ipv6/ip6_input.c) · 71f6f6df
    Jesper Nilsson authored
    Commit 778d80be
    (ipv6: Add disable_ipv6 sysctl to disable IPv6 operaion on specific interface)
    seems to have introduced a leak of sk_buff's for ipv6 traffic,
    at least in some configurations where idev is NULL, or when ipv6
    is disabled via sysctl.
    
    The problem is that if the first condition of the if-statement
    returns non-NULL, it returns an skb with only one reference,
    and when the other conditions apply, execution jumps to the "out"
    label, which does not call kfree_skb for it.
    
    To plug this leak, change to use the "drop" label instead.
    (this relies on it being ok to call kfree_skb on NULL)
    This also allows us to avoid calling rcu_read_unlock here,
    and removes the only user of the "out" label.
    Signed-off-by: default avatarJesper Nilsson <jesper.nilsson@axis.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    71f6f6df
ip6_input.c 7.47 KB