Skip to content

Commit c1c502b

Browse files
Florian Westphaldavem330
authored andcommitted
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 <[email protected]> Signed-off-by: David S. Miller <[email protected]>
1 parent e420251 commit c1c502b

File tree

8 files changed

+55
-32
lines changed

8 files changed

+55
-32
lines changed

net/bridge/br_mdb.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -760,9 +760,9 @@ static int br_mdb_del(struct sk_buff *skb, struct nlmsghdr *nlh,
760760

761761
void br_mdb_init(void)
762762
{
763-
rtnl_register(PF_BRIDGE, RTM_GETMDB, NULL, br_mdb_dump, 0);
764-
rtnl_register(PF_BRIDGE, RTM_NEWMDB, br_mdb_add, NULL, 0);
765-
rtnl_register(PF_BRIDGE, RTM_DELMDB, br_mdb_del, NULL, 0);
763+
rtnl_register_module(THIS_MODULE, PF_BRIDGE, RTM_GETMDB, NULL, br_mdb_dump, 0);
764+
rtnl_register_module(THIS_MODULE, PF_BRIDGE, RTM_NEWMDB, br_mdb_add, NULL, 0);
765+
rtnl_register_module(THIS_MODULE, PF_BRIDGE, RTM_DELMDB, br_mdb_del, NULL, 0);
766766
}
767767

768768
void br_mdb_uninit(void)

net/can/gw.c

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1014,6 +1014,8 @@ static struct pernet_operations cangw_pernet_ops = {
10141014

10151015
static __init int cgw_module_init(void)
10161016
{
1017+
int ret;
1018+
10171019
/* sanitize given module parameter */
10181020
max_hops = clamp_t(unsigned int, max_hops, CGW_MIN_HOPS, CGW_MAX_HOPS);
10191021

@@ -1031,15 +1033,19 @@ static __init int cgw_module_init(void)
10311033
notifier.notifier_call = cgw_notifier;
10321034
register_netdevice_notifier(&notifier);
10331035

1034-
if (__rtnl_register(PF_CAN, RTM_GETROUTE, NULL, cgw_dump_jobs, 0)) {
1036+
ret = rtnl_register_module(THIS_MODULE, PF_CAN, RTM_GETROUTE,
1037+
NULL, cgw_dump_jobs, 0);
1038+
if (ret) {
10351039
unregister_netdevice_notifier(&notifier);
10361040
kmem_cache_destroy(cgw_cache);
10371041
return -ENOBUFS;
10381042
}
10391043

1040-
/* Only the first call to __rtnl_register can fail */
1041-
__rtnl_register(PF_CAN, RTM_NEWROUTE, cgw_create_job, NULL, 0);
1042-
__rtnl_register(PF_CAN, RTM_DELROUTE, cgw_remove_job, NULL, 0);
1044+
/* Only the first call to rtnl_register_module can fail */
1045+
rtnl_register_module(THIS_MODULE, PF_CAN, RTM_NEWROUTE,
1046+
cgw_create_job, NULL, 0);
1047+
rtnl_register_module(THIS_MODULE, PF_CAN, RTM_DELROUTE,
1048+
cgw_remove_job, NULL, 0);
10431049

10441050
return 0;
10451051
}

net/decnet/dn_dev.c

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1418,9 +1418,12 @@ void __init dn_dev_init(void)
14181418

14191419
dn_dev_devices_on();
14201420

1421-
rtnl_register(PF_DECnet, RTM_NEWADDR, dn_nl_newaddr, NULL, 0);
1422-
rtnl_register(PF_DECnet, RTM_DELADDR, dn_nl_deladdr, NULL, 0);
1423-
rtnl_register(PF_DECnet, RTM_GETADDR, NULL, dn_nl_dump_ifaddr, 0);
1421+
rtnl_register_module(THIS_MODULE, PF_DECnet, RTM_NEWADDR,
1422+
dn_nl_newaddr, NULL, 0);
1423+
rtnl_register_module(THIS_MODULE, PF_DECnet, RTM_DELADDR,
1424+
dn_nl_deladdr, NULL, 0);
1425+
rtnl_register_module(THIS_MODULE, PF_DECnet, RTM_GETADDR,
1426+
NULL, dn_nl_dump_ifaddr, 0);
14241427

14251428
proc_create("decnet_dev", S_IRUGO, init_net.proc_net, &dn_dev_seq_fops);
14261429

net/decnet/dn_fib.c

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -792,8 +792,10 @@ void __init dn_fib_init(void)
792792

793793
register_dnaddr_notifier(&dn_fib_dnaddr_notifier);
794794

795-
rtnl_register(PF_DECnet, RTM_NEWROUTE, dn_fib_rtm_newroute, NULL, 0);
796-
rtnl_register(PF_DECnet, RTM_DELROUTE, dn_fib_rtm_delroute, NULL, 0);
795+
rtnl_register_module(THIS_MODULE, PF_DECnet, RTM_NEWROUTE,
796+
dn_fib_rtm_newroute, NULL, 0);
797+
rtnl_register_module(THIS_MODULE, PF_DECnet, RTM_DELROUTE,
798+
dn_fib_rtm_delroute, NULL, 0);
797799
}
798800

799801

net/decnet/dn_route.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1923,11 +1923,11 @@ void __init dn_route_init(void)
19231923
&dn_rt_cache_seq_fops);
19241924

19251925
#ifdef CONFIG_DECNET_ROUTER
1926-
rtnl_register(PF_DECnet, RTM_GETROUTE, dn_cache_getroute,
1927-
dn_fib_dump, 0);
1926+
rtnl_register_module(THIS_MODULE, PF_DECnet, RTM_GETROUTE,
1927+
dn_cache_getroute, dn_fib_dump, 0);
19281928
#else
1929-
rtnl_register(PF_DECnet, RTM_GETROUTE, dn_cache_getroute,
1930-
dn_cache_dump, 0);
1929+
rtnl_register_module(THIS_MODULE, PF_DECnet, RTM_GETROUTE,
1930+
dn_cache_getroute, dn_cache_dump, 0);
19311931
#endif
19321932
}
19331933

net/mpls/af_mpls.c

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2510,12 +2510,15 @@ static int __init mpls_init(void)
25102510

25112511
rtnl_af_register(&mpls_af_ops);
25122512

2513-
rtnl_register(PF_MPLS, RTM_NEWROUTE, mpls_rtm_newroute, NULL, 0);
2514-
rtnl_register(PF_MPLS, RTM_DELROUTE, mpls_rtm_delroute, NULL, 0);
2515-
rtnl_register(PF_MPLS, RTM_GETROUTE, mpls_getroute, mpls_dump_routes,
2516-
0);
2517-
rtnl_register(PF_MPLS, RTM_GETNETCONF, mpls_netconf_get_devconf,
2518-
mpls_netconf_dump_devconf, 0);
2513+
rtnl_register_module(THIS_MODULE, PF_MPLS, RTM_NEWROUTE,
2514+
mpls_rtm_newroute, NULL, 0);
2515+
rtnl_register_module(THIS_MODULE, PF_MPLS, RTM_DELROUTE,
2516+
mpls_rtm_delroute, NULL, 0);
2517+
rtnl_register_module(THIS_MODULE, PF_MPLS, RTM_GETROUTE,
2518+
mpls_getroute, mpls_dump_routes, 0);
2519+
rtnl_register_module(THIS_MODULE, PF_MPLS, RTM_GETNETCONF,
2520+
mpls_netconf_get_devconf,
2521+
mpls_netconf_dump_devconf, 0);
25192522
err = ipgre_tunnel_encap_add_mpls_ops();
25202523
if (err)
25212524
pr_err("Can't add mpls over gre tunnel ops\n");

net/phonet/pn_netlink.c

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -299,16 +299,21 @@ static int route_dumpit(struct sk_buff *skb, struct netlink_callback *cb)
299299

300300
int __init phonet_netlink_register(void)
301301
{
302-
int err = __rtnl_register(PF_PHONET, RTM_NEWADDR, addr_doit,
303-
NULL, 0);
302+
int err = rtnl_register_module(THIS_MODULE, PF_PHONET, RTM_NEWADDR,
303+
addr_doit, NULL, 0);
304304
if (err)
305305
return err;
306306

307-
/* Further __rtnl_register() cannot fail */
308-
__rtnl_register(PF_PHONET, RTM_DELADDR, addr_doit, NULL, 0);
309-
__rtnl_register(PF_PHONET, RTM_GETADDR, NULL, getaddr_dumpit, 0);
310-
__rtnl_register(PF_PHONET, RTM_NEWROUTE, route_doit, NULL, 0);
311-
__rtnl_register(PF_PHONET, RTM_DELROUTE, route_doit, NULL, 0);
312-
__rtnl_register(PF_PHONET, RTM_GETROUTE, NULL, route_dumpit, 0);
307+
/* Further rtnl_register_module() cannot fail */
308+
rtnl_register_module(THIS_MODULE, PF_PHONET, RTM_DELADDR,
309+
addr_doit, NULL, 0);
310+
rtnl_register_module(THIS_MODULE, PF_PHONET, RTM_GETADDR,
311+
NULL, getaddr_dumpit, 0);
312+
rtnl_register_module(THIS_MODULE, PF_PHONET, RTM_NEWROUTE,
313+
route_doit, NULL, 0);
314+
rtnl_register_module(THIS_MODULE, PF_PHONET, RTM_DELROUTE,
315+
route_doit, NULL, 0);
316+
rtnl_register_module(THIS_MODULE, PF_PHONET, RTM_GETROUTE,
317+
NULL, route_dumpit, 0);
313318
return 0;
314319
}

net/qrtr/qrtr.c

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1116,9 +1116,13 @@ static int __init qrtr_proto_init(void)
11161116
return rc;
11171117
}
11181118

1119-
rtnl_register(PF_QIPCRTR, RTM_NEWADDR, qrtr_addr_doit, NULL, 0);
1119+
rc = rtnl_register_module(THIS_MODULE, PF_QIPCRTR, RTM_NEWADDR, qrtr_addr_doit, NULL, 0);
1120+
if (rc) {
1121+
sock_unregister(qrtr_family.family);
1122+
proto_unregister(&qrtr_proto);
1123+
}
11201124

1121-
return 0;
1125+
return rc;
11221126
}
11231127
postcore_initcall(qrtr_proto_init);
11241128

0 commit comments

Comments
 (0)