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; _______________________________________________ svn-src-all@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/svn-src-all To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"