summaryrefslogtreecommitdiffstats
path: root/drivers/base/container.c
diff options
context:
space:
mode:
authorWANG Cong <xiyou.wangcong@gmail.com>2017-05-08 10:12:13 -0700
committerDavid S. Miller <davem@davemloft.net>2017-05-08 17:31:24 -0400
commit242d3a49a2a1a71d8eb9f953db1bcaa9d698ce00 (patch)
tree7565ac4897777e242dc18c26896cb972720aba35 /drivers/base/container.c
parent29cee56c0be46ad01e78af104a06223c65ee0c67 (diff)
downloadlinux-242d3a49a2a1a71d8eb9f953db1bcaa9d698ce00.tar.bz2
ipv6: reorder ip6_route_dev_notifier after ipv6_dev_notf
For each netns (except init_net), we initialize its null entry in 3 places: 1) The template itself, as we use kmemdup() 2) Code around dst_init_metrics() in ip6_route_net_init() 3) ip6_route_dev_notify(), which is supposed to initialize it after loopback registers Unfortunately the last one still happens in a wrong order because we expect to initialize net->ipv6.ip6_null_entry->rt6i_idev to net->loopback_dev's idev, thus we have to do that after we add idev to loopback. However, this notifier has priority == 0 same as ipv6_dev_notf, and ipv6_dev_notf is registered after ip6_route_dev_notifier so it is called actually after ip6_route_dev_notifier. This is similar to commit 2f460933f58e ("ipv6: initialize route null entry in addrconf_init()") which fixes init_net. Fix it by picking a smaller priority for ip6_route_dev_notifier. Also, we have to release the refcnt accordingly when unregistering loopback_dev because device exit functions are called before subsys exit functions. Acked-by: David Ahern <dsahern@gmail.com> Tested-by: David Ahern <dsahern@gmail.com> Signed-off-by: Cong Wang <xiyou.wangcong@gmail.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/base/container.c')
0 files changed, 0 insertions, 0 deletions