forked from luck/tmp_suning_uos_patched
net: use rtnl_register_module where needed
all of these can be compiled as a module, so use new _module version to make sure module can no longer be removed while callback/dump is in use. Signed-off-by: Florian Westphal <fw@strlen.de> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
e420251148
commit
c1c502b511
|
@ -760,9 +760,9 @@ static int br_mdb_del(struct sk_buff *skb, struct nlmsghdr *nlh,
|
|||
|
||||
void br_mdb_init(void)
|
||||
{
|
||||
rtnl_register(PF_BRIDGE, RTM_GETMDB, NULL, br_mdb_dump, 0);
|
||||
rtnl_register(PF_BRIDGE, RTM_NEWMDB, br_mdb_add, NULL, 0);
|
||||
rtnl_register(PF_BRIDGE, RTM_DELMDB, br_mdb_del, NULL, 0);
|
||||
rtnl_register_module(THIS_MODULE, PF_BRIDGE, RTM_GETMDB, NULL, br_mdb_dump, 0);
|
||||
rtnl_register_module(THIS_MODULE, PF_BRIDGE, RTM_NEWMDB, br_mdb_add, NULL, 0);
|
||||
rtnl_register_module(THIS_MODULE, PF_BRIDGE, RTM_DELMDB, br_mdb_del, NULL, 0);
|
||||
}
|
||||
|
||||
void br_mdb_uninit(void)
|
||||
|
|
14
net/can/gw.c
14
net/can/gw.c
|
@ -1014,6 +1014,8 @@ static struct pernet_operations cangw_pernet_ops = {
|
|||
|
||||
static __init int cgw_module_init(void)
|
||||
{
|
||||
int ret;
|
||||
|
||||
/* sanitize given module parameter */
|
||||
max_hops = clamp_t(unsigned int, max_hops, CGW_MIN_HOPS, CGW_MAX_HOPS);
|
||||
|
||||
|
@ -1031,15 +1033,19 @@ static __init int cgw_module_init(void)
|
|||
notifier.notifier_call = cgw_notifier;
|
||||
register_netdevice_notifier(¬ifier);
|
||||
|
||||
if (__rtnl_register(PF_CAN, RTM_GETROUTE, NULL, cgw_dump_jobs, 0)) {
|
||||
ret = rtnl_register_module(THIS_MODULE, PF_CAN, RTM_GETROUTE,
|
||||
NULL, cgw_dump_jobs, 0);
|
||||
if (ret) {
|
||||
unregister_netdevice_notifier(¬ifier);
|
||||
kmem_cache_destroy(cgw_cache);
|
||||
return -ENOBUFS;
|
||||
}
|
||||
|
||||
/* Only the first call to __rtnl_register can fail */
|
||||
__rtnl_register(PF_CAN, RTM_NEWROUTE, cgw_create_job, NULL, 0);
|
||||
__rtnl_register(PF_CAN, RTM_DELROUTE, cgw_remove_job, NULL, 0);
|
||||
/* Only the first call to rtnl_register_module can fail */
|
||||
rtnl_register_module(THIS_MODULE, PF_CAN, RTM_NEWROUTE,
|
||||
cgw_create_job, NULL, 0);
|
||||
rtnl_register_module(THIS_MODULE, PF_CAN, RTM_DELROUTE,
|
||||
cgw_remove_job, NULL, 0);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -1418,9 +1418,12 @@ void __init dn_dev_init(void)
|
|||
|
||||
dn_dev_devices_on();
|
||||
|
||||
rtnl_register(PF_DECnet, RTM_NEWADDR, dn_nl_newaddr, NULL, 0);
|
||||
rtnl_register(PF_DECnet, RTM_DELADDR, dn_nl_deladdr, NULL, 0);
|
||||
rtnl_register(PF_DECnet, RTM_GETADDR, NULL, dn_nl_dump_ifaddr, 0);
|
||||
rtnl_register_module(THIS_MODULE, PF_DECnet, RTM_NEWADDR,
|
||||
dn_nl_newaddr, NULL, 0);
|
||||
rtnl_register_module(THIS_MODULE, PF_DECnet, RTM_DELADDR,
|
||||
dn_nl_deladdr, NULL, 0);
|
||||
rtnl_register_module(THIS_MODULE, PF_DECnet, RTM_GETADDR,
|
||||
NULL, dn_nl_dump_ifaddr, 0);
|
||||
|
||||
proc_create("decnet_dev", S_IRUGO, init_net.proc_net, &dn_dev_seq_fops);
|
||||
|
||||
|
|
|
@ -792,8 +792,10 @@ void __init dn_fib_init(void)
|
|||
|
||||
register_dnaddr_notifier(&dn_fib_dnaddr_notifier);
|
||||
|
||||
rtnl_register(PF_DECnet, RTM_NEWROUTE, dn_fib_rtm_newroute, NULL, 0);
|
||||
rtnl_register(PF_DECnet, RTM_DELROUTE, dn_fib_rtm_delroute, NULL, 0);
|
||||
rtnl_register_module(THIS_MODULE, PF_DECnet, RTM_NEWROUTE,
|
||||
dn_fib_rtm_newroute, NULL, 0);
|
||||
rtnl_register_module(THIS_MODULE, PF_DECnet, RTM_DELROUTE,
|
||||
dn_fib_rtm_delroute, NULL, 0);
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -1923,11 +1923,11 @@ void __init dn_route_init(void)
|
|||
&dn_rt_cache_seq_fops);
|
||||
|
||||
#ifdef CONFIG_DECNET_ROUTER
|
||||
rtnl_register(PF_DECnet, RTM_GETROUTE, dn_cache_getroute,
|
||||
dn_fib_dump, 0);
|
||||
rtnl_register_module(THIS_MODULE, PF_DECnet, RTM_GETROUTE,
|
||||
dn_cache_getroute, dn_fib_dump, 0);
|
||||
#else
|
||||
rtnl_register(PF_DECnet, RTM_GETROUTE, dn_cache_getroute,
|
||||
dn_cache_dump, 0);
|
||||
rtnl_register_module(THIS_MODULE, PF_DECnet, RTM_GETROUTE,
|
||||
dn_cache_getroute, dn_cache_dump, 0);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
|
|
@ -2510,12 +2510,15 @@ static int __init mpls_init(void)
|
|||
|
||||
rtnl_af_register(&mpls_af_ops);
|
||||
|
||||
rtnl_register(PF_MPLS, RTM_NEWROUTE, mpls_rtm_newroute, NULL, 0);
|
||||
rtnl_register(PF_MPLS, RTM_DELROUTE, mpls_rtm_delroute, NULL, 0);
|
||||
rtnl_register(PF_MPLS, RTM_GETROUTE, mpls_getroute, mpls_dump_routes,
|
||||
0);
|
||||
rtnl_register(PF_MPLS, RTM_GETNETCONF, mpls_netconf_get_devconf,
|
||||
mpls_netconf_dump_devconf, 0);
|
||||
rtnl_register_module(THIS_MODULE, PF_MPLS, RTM_NEWROUTE,
|
||||
mpls_rtm_newroute, NULL, 0);
|
||||
rtnl_register_module(THIS_MODULE, PF_MPLS, RTM_DELROUTE,
|
||||
mpls_rtm_delroute, NULL, 0);
|
||||
rtnl_register_module(THIS_MODULE, PF_MPLS, RTM_GETROUTE,
|
||||
mpls_getroute, mpls_dump_routes, 0);
|
||||
rtnl_register_module(THIS_MODULE, PF_MPLS, RTM_GETNETCONF,
|
||||
mpls_netconf_get_devconf,
|
||||
mpls_netconf_dump_devconf, 0);
|
||||
err = ipgre_tunnel_encap_add_mpls_ops();
|
||||
if (err)
|
||||
pr_err("Can't add mpls over gre tunnel ops\n");
|
||||
|
|
|
@ -299,16 +299,21 @@ static int route_dumpit(struct sk_buff *skb, struct netlink_callback *cb)
|
|||
|
||||
int __init phonet_netlink_register(void)
|
||||
{
|
||||
int err = __rtnl_register(PF_PHONET, RTM_NEWADDR, addr_doit,
|
||||
NULL, 0);
|
||||
int err = rtnl_register_module(THIS_MODULE, PF_PHONET, RTM_NEWADDR,
|
||||
addr_doit, NULL, 0);
|
||||
if (err)
|
||||
return err;
|
||||
|
||||
/* Further __rtnl_register() cannot fail */
|
||||
__rtnl_register(PF_PHONET, RTM_DELADDR, addr_doit, NULL, 0);
|
||||
__rtnl_register(PF_PHONET, RTM_GETADDR, NULL, getaddr_dumpit, 0);
|
||||
__rtnl_register(PF_PHONET, RTM_NEWROUTE, route_doit, NULL, 0);
|
||||
__rtnl_register(PF_PHONET, RTM_DELROUTE, route_doit, NULL, 0);
|
||||
__rtnl_register(PF_PHONET, RTM_GETROUTE, NULL, route_dumpit, 0);
|
||||
/* Further rtnl_register_module() cannot fail */
|
||||
rtnl_register_module(THIS_MODULE, PF_PHONET, RTM_DELADDR,
|
||||
addr_doit, NULL, 0);
|
||||
rtnl_register_module(THIS_MODULE, PF_PHONET, RTM_GETADDR,
|
||||
NULL, getaddr_dumpit, 0);
|
||||
rtnl_register_module(THIS_MODULE, PF_PHONET, RTM_NEWROUTE,
|
||||
route_doit, NULL, 0);
|
||||
rtnl_register_module(THIS_MODULE, PF_PHONET, RTM_DELROUTE,
|
||||
route_doit, NULL, 0);
|
||||
rtnl_register_module(THIS_MODULE, PF_PHONET, RTM_GETROUTE,
|
||||
NULL, route_dumpit, 0);
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -1116,9 +1116,13 @@ static int __init qrtr_proto_init(void)
|
|||
return rc;
|
||||
}
|
||||
|
||||
rtnl_register(PF_QIPCRTR, RTM_NEWADDR, qrtr_addr_doit, NULL, 0);
|
||||
rc = rtnl_register_module(THIS_MODULE, PF_QIPCRTR, RTM_NEWADDR, qrtr_addr_doit, NULL, 0);
|
||||
if (rc) {
|
||||
sock_unregister(qrtr_family.family);
|
||||
proto_unregister(&qrtr_proto);
|
||||
}
|
||||
|
||||
return 0;
|
||||
return rc;
|
||||
}
|
||||
postcore_initcall(qrtr_proto_init);
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user