diff options
author | Alexander V. Chernikov <melifaro@FreeBSD.org> | 2014-10-01 14:39:06 +0000 |
---|---|---|
committer | Alexander V. Chernikov <melifaro@FreeBSD.org> | 2014-10-01 14:39:06 +0000 |
commit | 31f0d081d8bb499cd7beab872694ca4b3ebd9cf0 (patch) | |
tree | 24031f4983dce11f40ab7bc96fd391c9443ad7c2 | |
parent | bb6b32dd818fbf3e1c8f726a9330170a9e31a62b (diff) | |
download | src-31f0d081d8bb499cd7beab872694ca4b3ebd9cf0.tar.gz src-31f0d081d8bb499cd7beab872694ca4b3ebd9cf0.zip |
Remove lock init from radix.c.
Radix has never managed its locking itself.
The only consumer using radix with embeded rwlock
is system routing table. Move per-AF lock inits there.
Notes
Notes:
svn path=/head/; revision=272361
-rw-r--r-- | sys/net/radix.c | 3 | ||||
-rw-r--r-- | sys/netinet/in_rmx.c | 4 | ||||
-rw-r--r-- | sys/netinet6/in6_rmx.c | 4 | ||||
-rw-r--r-- | sys/netpfil/pf/pf_table.c | 8 |
4 files changed, 8 insertions, 11 deletions
diff --git a/sys/net/radix.c b/sys/net/radix.c index 62f57f80dac2..98a18004dc41 100644 --- a/sys/net/radix.c +++ b/sys/net/radix.c @@ -1122,9 +1122,6 @@ rn_inithead_internal(void **head, int off) R_Zalloc(rnh, struct radix_node_head *, sizeof (*rnh)); if (rnh == 0) return (0); -#ifdef _KERNEL - RADIX_NODE_HEAD_LOCK_INIT(rnh); -#endif *head = rnh; t = rn_newpair(rn_zeros, off, rnh->rnh_nodes); ttt = rnh->rnh_nodes + 2; diff --git a/sys/netinet/in_rmx.c b/sys/netinet/in_rmx.c index bd5835ea29c8..09669e67cfc3 100644 --- a/sys/netinet/in_rmx.c +++ b/sys/netinet/in_rmx.c @@ -352,10 +352,12 @@ in_inithead(void **head, int off) if (!rn_inithead(head, 32)) return 0; + rnh = *head; + RADIX_NODE_HEAD_LOCK_INIT(rnh); + if (off == 0) /* XXX MRT see above */ return 1; /* only do the rest for a real routing table */ - rnh = *head; rnh->rnh_addaddr = in_addroute; in_setmatchfunc(rnh, V_drop_redirect); rnh->rnh_close = in_clsroute; diff --git a/sys/netinet6/in6_rmx.c b/sys/netinet6/in6_rmx.c index 10e833a8ae58..c1caf2c721d6 100644 --- a/sys/netinet6/in6_rmx.c +++ b/sys/netinet6/in6_rmx.c @@ -270,10 +270,12 @@ in6_inithead(void **head, int off) if (!rn_inithead(head, offsetof(struct sockaddr_in6, sin6_addr) << 3)) return 0; /* See above */ + rnh = *head; + RADIX_NODE_HEAD_LOCK_INIT(rnh); + if (off == 0) /* See above */ return 1; /* only do the rest for the real thing */ - rnh = *head; rnh->rnh_addaddr = in6_addroute; if (V__in6_rt_was_here == 0) { diff --git a/sys/netpfil/pf/pf_table.c b/sys/netpfil/pf/pf_table.c index 9c5ee320234b..b9f13b93de03 100644 --- a/sys/netpfil/pf/pf_table.c +++ b/sys/netpfil/pf/pf_table.c @@ -1853,14 +1853,10 @@ pfr_destroy_ktable(struct pfr_ktable *kt, int flushaddr) pfr_clean_node_mask(kt, &addrq); pfr_destroy_kentries(&addrq); } - if (kt->pfrkt_ip4 != NULL) { - RADIX_NODE_HEAD_DESTROY(kt->pfrkt_ip4); + if (kt->pfrkt_ip4 != NULL) rn_detachhead((void **)&kt->pfrkt_ip4); - } - if (kt->pfrkt_ip6 != NULL) { - RADIX_NODE_HEAD_DESTROY(kt->pfrkt_ip6); + if (kt->pfrkt_ip6 != NULL) rn_detachhead((void **)&kt->pfrkt_ip6); - } if (kt->pfrkt_shadow != NULL) pfr_destroy_ktable(kt->pfrkt_shadow, flushaddr); if (kt->pfrkt_rs != NULL) { |