xfrm: Register xfrm_dev_notifier in appropriate place
Currently, driver registers it from pernet_operations::init method, and this breaks modularity, because initialization of net namespace and netdevice notifiers are orthogonal actions. We don't have per-namespace netdevice notifiers; all of them are global for all devices in all namespaces. Signed-off-by: Kirill Tkhai <ktkhai@virtuozzo.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
caeeeda344
commit
e9a441b6e7
|
@ -1894,7 +1894,7 @@ static inline struct xfrm_offload *xfrm_offload(struct sk_buff *skb)
|
|||
#endif
|
||||
}
|
||||
|
||||
void __net_init xfrm_dev_init(void);
|
||||
void __init xfrm_dev_init(void);
|
||||
|
||||
#ifdef CONFIG_XFRM_OFFLOAD
|
||||
void xfrm_dev_resume(struct sk_buff *skb);
|
||||
|
|
|
@ -350,7 +350,7 @@ static struct notifier_block xfrm_dev_notifier = {
|
|||
.notifier_call = xfrm_dev_event,
|
||||
};
|
||||
|
||||
void __net_init xfrm_dev_init(void)
|
||||
void __init xfrm_dev_init(void)
|
||||
{
|
||||
register_netdevice_notifier(&xfrm_dev_notifier);
|
||||
}
|
||||
|
|
|
@ -2895,8 +2895,6 @@ static int __net_init xfrm_policy_init(struct net *net)
|
|||
INIT_LIST_HEAD(&net->xfrm.policy_all);
|
||||
INIT_WORK(&net->xfrm.policy_hash_work, xfrm_hash_resize);
|
||||
INIT_WORK(&net->xfrm.policy_hthresh.work, xfrm_hash_rebuild);
|
||||
if (net_eq(net, &init_net))
|
||||
xfrm_dev_init();
|
||||
return 0;
|
||||
|
||||
out_bydst:
|
||||
|
@ -2999,6 +2997,7 @@ void __init xfrm_init(void)
|
|||
INIT_WORK(&xfrm_pcpu_work[i], xfrm_pcpu_work_fn);
|
||||
|
||||
register_pernet_subsys(&xfrm_net_ops);
|
||||
xfrm_dev_init();
|
||||
seqcount_init(&xfrm_policy_hash_generation);
|
||||
xfrm_input_init();
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue