ipv6: initialize route null entry in addrconf_init()
authorWANG Cong <xiyou.wangcong@gmail.com>
Thu, 4 May 2017 05:07:31 +0000 (22:07 -0700)
committerDavid S. Miller <davem@davemloft.net>
Thu, 4 May 2017 16:51:24 +0000 (12:51 -0400)
commit2f460933f58eee3393aba64f0f6d14acb08d1724
tree5eff3f149bacb8eb34e870855d9623de077d85de
parent15981952e8d04fa3349cd8db10f46ab3273ff398
ipv6: initialize route null entry in addrconf_init()

Andrey reported a crash on init_net.ipv6.ip6_null_entry->rt6i_idev
since it is always NULL.

This is clearly wrong, we have code to initialize it to loopback_dev,
unfortunately the order is still not correct.

loopback_dev is registered very early during boot, we lose a chance
to re-initialize it in notifier. addrconf_init() is called after
ip6_route_init(), which means we have no chance to correct it.

Fix it by moving this initialization explicitly after
ipv6_add_dev(init_net.loopback_dev) in addrconf_init().

Reported-by: Andrey Konovalov <andreyknvl@google.com>
Signed-off-by: Cong Wang <xiyou.wangcong@gmail.com>
Tested-by: Andrey Konovalov <andreyknvl@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
include/net/ip6_route.h
net/ipv6/addrconf.c
net/ipv6/route.c