summaryrefslogtreecommitdiff
path: root/sys/rpc/svc.c
diff options
context:
space:
mode:
authorRick Macklem <rmacklem@FreeBSD.org>2009-06-04 14:13:06 +0000
committerRick Macklem <rmacklem@FreeBSD.org>2009-06-04 14:13:06 +0000
commita4fa5e6dd9017ed6d7550099bb0a0a12801d487e (patch)
treecc0d48c0c71f2161d578f4ba91009671a5e3a128 /sys/rpc/svc.c
parentc421791e77500b5a4883bbee54d6750ab828bed4 (diff)
Notes
Diffstat (limited to 'sys/rpc/svc.c')
-rw-r--r--sys/rpc/svc.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/sys/rpc/svc.c b/sys/rpc/svc.c
index 8af9e80f0198..fbddafbfecbb 100644
--- a/sys/rpc/svc.c
+++ b/sys/rpc/svc.c
@@ -175,12 +175,12 @@ svcpool_destroy(SVCPOOL *pool)
mtx_lock(&pool->sp_lock);
}
- mtx_destroy(&pool->sp_lock);
-
TAILQ_FOREACH_SAFE(xprt, &cleanup, xp_link, nxprt) {
SVC_RELEASE(xprt);
}
+ mtx_destroy(&pool->sp_lock);
+
if (pool->sp_rcache)
replay_freecache(pool->sp_rcache);
@@ -353,15 +353,16 @@ xprt_active(SVCXPRT *xprt)
{
SVCPOOL *pool = xprt->xp_pool;
+ mtx_lock(&pool->sp_lock);
+
if (!xprt->xp_registered) {
/*
* Race with xprt_unregister - we lose.
*/
+ mtx_unlock(&pool->sp_lock);
return;
}
- mtx_lock(&pool->sp_lock);
-
if (!xprt->xp_active) {
TAILQ_INSERT_TAIL(&pool->sp_active, xprt, xp_alink);
xprt->xp_active = TRUE;