ipv6: fix NULL deref in ip6_rcv_core()
authorEric Dumazet <edumazet@google.com>
Wed, 13 Apr 2022 20:56:53 +0000 (13:56 -0700)
committerJakub Kicinski <kuba@kernel.org>
Fri, 15 Apr 2022 21:05:18 +0000 (14:05 -0700)
idev can be NULL, as the surrounding code suggests.

Fixes: 4daf841a2ef3 ("net: ipv6: add skb drop reasons to ip6_rcv_core()")
Signed-off-by: Eric Dumazet <edumazet@google.com>
Cc: Menglong Dong <imagedong@tencent.com>
Cc: Jiang Biao <benbjiang@tencent.com>
Cc: Hao Peng <flyingpeng@tencent.com>
Link: https://lore.kernel.org/r/20220413205653.1178458-1-eric.dumazet@gmail.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
net/ipv6/ip6_input.c

index 126ae3a..0322cc8 100644 (file)
@@ -166,7 +166,7 @@ static struct sk_buff *ip6_rcv_core(struct sk_buff *skb, struct net_device *dev,
        if ((skb = skb_share_check(skb, GFP_ATOMIC)) == NULL ||
            !idev || unlikely(idev->cnf.disable_ipv6)) {
                __IP6_INC_STATS(net, idev, IPSTATS_MIB_INDISCARDS);
-               if (unlikely(idev->cnf.disable_ipv6))
+               if (idev && unlikely(idev->cnf.disable_ipv6))
                        SKB_DR_SET(reason, IPV6DISABLED);
                goto drop;
        }