svn commit: r186166 - head/sys/net
Kip Macy
kmacy at FreeBSD.org
Tue Dec 16 04:40:44 UTC 2008
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;
More information about the svn-src-head
mailing list