Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 16 Dec 2008 04:40:43 +0000 (UTC)
From:      Kip Macy <kmacy@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r186166 - head/sys/net
Message-ID:  <200812160440.mBG4ehbK026787@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: kmacy
Date: Tue Dec 16 04:40:43 2008
New Revision: 186166
URL: http://svn.freebsd.org/changeset/base/186166

Log:
  assert that the radix node head is locked when manipulating the tree

Modified:
  head/sys/net/radix.c

Modified: head/sys/net/radix.c
==============================================================================
--- head/sys/net/radix.c	Tue Dec 16 04:34:09 2008	(r186165)
+++ head/sys/net/radix.c	Tue Dec 16 04:40:43 2008	(r186166)
@@ -274,6 +274,7 @@ rn_match(v_arg, head)
 	int off = t->rn_offset, vlen = LEN(cp), matched_off;
 	register int test, b, rn_bit;
 
+	RADIX_NODE_HEAD_LOCK_ASSERT(head);
 	/*
 	 * Open code rn_search(v, top) to avoid overhead of extra
 	 * subroutine call.
@@ -618,6 +619,8 @@ rn_addroute(v_arg, n_arg, head, treenode
 	caddr_t mmask;
 	struct radix_mask *m, **mp;
 
+
+	RADIX_NODE_HEAD_WLOCK_ASSERT(head);
 	/*
 	 * In dealing with non-contiguous masks, there may be
 	 * many different routes which have the same mask.
@@ -788,6 +791,7 @@ rn_delete(v_arg, netmask_arg, head)
 	caddr_t v, netmask;
 	int b, head_off, vlen;
 
+	RADIX_NODE_HEAD_WLOCK_ASSERT(head);
 	v = v_arg;
 	netmask = netmask_arg;
 	x = head->rnh_treetop;
@@ -981,6 +985,7 @@ rn_walktree_from(h, a, m, f, w)
 	int stopping = 0;
 	int lastb;
 
+	RADIX_NODE_HEAD_LOCK_ASSERT(h);
 	/*
 	 * rn_search_m is sort-of-open-coded here. We cannot use the
 	 * function because we need to keep track of the last node seen.
@@ -1087,6 +1092,8 @@ rn_walktree(h, f, w)
 	 * while applying the function f to it, so we need to calculate
 	 * the successor node in advance.
 	 */
+
+	RADIX_NODE_HEAD_LOCK_ASSERT(h);
 	/* First time through node, go left */
 	while (rn->rn_bit >= 0)
 		rn = rn->rn_left;



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