]> git.baikalelectronics.ru Git - kernel.git/commit
blackhole_netdev: fix syzkaller reported issue
authorMahesh Bandewar <maheshb@google.com>
Sat, 12 Oct 2019 01:14:55 +0000 (18:14 -0700)
committerDavid S. Miller <davem@davemloft.net>
Tue, 15 Oct 2019 17:35:23 +0000 (10:35 -0700)
commit6a55ffa541d32d10a061c168f909538ff5ecabc7
tree4ca7931e6ae9d3e2d3d115d01b0fda824a9ca97e
parent122be5fb65f82c929ccb6be4a597924d765a61e5
blackhole_netdev: fix syzkaller reported issue

While invalidating the dst, we assign backhole_netdev instead of
loopback device. However, this device does not have idev pointer
and hence no ip6_ptr even if IPv6 is enabled. Possibly this has
triggered the syzbot reported crash.

The syzbot report does not have reproducer, however, this is the
only device that doesn't have matching idev created.

Crash instruction is :

static inline bool ip6_ignore_linkdown(const struct net_device *dev)
{
        const struct inet6_dev *idev = __in6_dev_get(dev);

        return !!idev->cnf.ignore_routes_with_linkdown; <= crash
}

Also ipv6 always assumes presence of idev and never checks for it
being NULL (as does the above referenced code). So adding a idev
for the blackhole_netdev to avoid this class of crashes in the future.

Signed-off-by: David S. Miller <davem@davemloft.net>
net/ipv6/addrconf.c
net/ipv6/route.c