rtnetlink_net_ops are added the same core initcall as netlink_net_ops, so they has to be added right after netlink_net_ops.
rtnetlink_net_init() and rtnetlink_net_exit() create and destroy netlink socket. It looks like, another pernet_operations are not interested in foreiner net::rtnl, so rtnetlink_net_ops may be safely moved to pernet_sys list. Signed-off-by: Kirill Tkhai <ktk...@virtuozzo.com> --- net/core/rtnetlink.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/net/core/rtnetlink.c b/net/core/rtnetlink.c index cb06d43c4230..d9cf13554e4d 100644 --- a/net/core/rtnetlink.c +++ b/net/core/rtnetlink.c @@ -4503,7 +4503,7 @@ void __init rtnetlink_init(void) for (i = 0; i < ARRAY_SIZE(rtnl_msg_handlers_ref); i++) refcount_set(&rtnl_msg_handlers_ref[i], 1); - if (register_pernet_subsys(&rtnetlink_net_ops)) + if (register_pernet_sys(&rtnetlink_net_ops)) panic("rtnetlink_init: cannot initialize rtnetlink\n"); register_netdevice_notifier(&rtnetlink_dev_notifier);