PERFORCE change 126332 for review
Kip Macy
kmacy at FreeBSD.org
Wed Sep 12 02:10:12 PDT 2007
http://perforce.freebsd.org/chv.cgi?CH=126332
Change 126332 by kmacy at kmacy_home:ethng on 2007/09/12 09:09:19
acquire the rnh lock shared for the lookup and matchaddr case
Affected files ...
.. //depot/projects/ethng/src/sys/net/route.c#3 edit
.. //depot/projects/ethng/src/sys/net/rtsock.c#3 edit
Differences ...
==== //depot/projects/ethng/src/sys/net/route.c#3 (text+ko) ====
@@ -144,7 +144,7 @@
rtstat.rts_unreach++;
goto miss2;
}
- RADIX_NODE_HEAD_LOCK(rnh);
+ RADIX_NODE_HEAD_LOCK_SHARED(rnh);
if ((rn = rnh->rnh_matchaddr(dst, rnh)) &&
(rn->rn_flags & RNF_ROOT) == 0) {
/*
@@ -197,7 +197,7 @@
RT_LOCK(newrt);
RT_ADDREF(newrt);
}
- RADIX_NODE_HEAD_UNLOCK(rnh);
+ RADIX_NODE_HEAD_UNLOCK_SHARED(rnh);
} else {
/*
* Either we hit the root or couldn't find any match,
@@ -206,7 +206,7 @@
*/
rtstat.rts_unreach++;
miss:
- RADIX_NODE_HEAD_UNLOCK(rnh);
+ RADIX_NODE_HEAD_UNLOCK_SHARED(rnh);
miss2: if (report) {
/*
* If required, report the failure to the supervising
@@ -1190,12 +1190,12 @@
*/
if ((rnh = rt_tables[dst->sa_family]) == NULL)
goto bad;
- RADIX_NODE_HEAD_LOCK(rnh);
+ RADIX_NODE_HEAD_LOCK_SHARED(rnh);
error = ((rn = rnh->rnh_lookup(dst, netmask, rnh)) == NULL ||
(rn->rn_flags & RNF_ROOT) ||
RNTORT(rn)->rt_ifa != ifa ||
!sa_equal((struct sockaddr *)rn->rn_key, dst));
- RADIX_NODE_HEAD_UNLOCK(rnh);
+ RADIX_NODE_HEAD_UNLOCK_SHARED(rnh);
if (error) {
bad:
if (m)
==== //depot/projects/ethng/src/sys/net/rtsock.c#3 (text+ko) ====
@@ -413,16 +413,16 @@
rnh = rt_tables[info.rti_info[RTAX_DST]->sa_family];
if (rnh == NULL)
senderr(EAFNOSUPPORT);
- RADIX_NODE_HEAD_LOCK(rnh);
+ RADIX_NODE_HEAD_LOCK_SHARED(rnh);
rt = (struct rtentry *) rnh->rnh_lookup(info.rti_info[RTAX_DST],
info.rti_info[RTAX_NETMASK], rnh);
if (rt == NULL) { /* XXX looks bogus */
- RADIX_NODE_HEAD_UNLOCK(rnh);
+ RADIX_NODE_HEAD_UNLOCK_SHARED(rnh);
senderr(ESRCH);
}
RT_LOCK(rt);
RT_ADDREF(rt);
- RADIX_NODE_HEAD_UNLOCK(rnh);
+ RADIX_NODE_HEAD_UNLOCK_SHARED(rnh);
/*
* Fix for PR: 82974
More information about the p4-projects
mailing list