Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 1 Oct 2014 14:39:07 +0000 (UTC)
From:      "Alexander V. Chernikov" <melifaro@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r272361 - in head/sys: net netinet netinet6 netpfil/pf
Message-ID:  <201410011439.s91Ed7K3022634@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: melifaro
Date: Wed Oct  1 14:39:06 2014
New Revision: 272361
URL: https://svnweb.freebsd.org/changeset/base/272361

Log:
  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.

Modified:
  head/sys/net/radix.c
  head/sys/netinet/in_rmx.c
  head/sys/netinet6/in6_rmx.c
  head/sys/netpfil/pf/pf_table.c

Modified: head/sys/net/radix.c
==============================================================================
--- head/sys/net/radix.c	Wed Oct  1 14:35:52 2014	(r272360)
+++ head/sys/net/radix.c	Wed Oct  1 14:39:06 2014	(r272361)
@@ -1122,9 +1122,6 @@ rn_inithead_internal(void **head, int of
 	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;

Modified: head/sys/netinet/in_rmx.c
==============================================================================
--- head/sys/netinet/in_rmx.c	Wed Oct  1 14:35:52 2014	(r272360)
+++ head/sys/netinet/in_rmx.c	Wed Oct  1 14:39:06 2014	(r272361)
@@ -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;

Modified: head/sys/netinet6/in6_rmx.c
==============================================================================
--- head/sys/netinet6/in6_rmx.c	Wed Oct  1 14:35:52 2014	(r272360)
+++ head/sys/netinet6/in6_rmx.c	Wed Oct  1 14:39:06 2014	(r272361)
@@ -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) {

Modified: head/sys/netpfil/pf/pf_table.c
==============================================================================
--- head/sys/netpfil/pf/pf_table.c	Wed Oct  1 14:35:52 2014	(r272360)
+++ head/sys/netpfil/pf/pf_table.c	Wed Oct  1 14:39:06 2014	(r272361)
@@ -1853,14 +1853,10 @@ pfr_destroy_ktable(struct pfr_ktable *kt
 		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) {



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201410011439.s91Ed7K3022634>