diff options
| author | Rick Macklem <rmacklem@FreeBSD.org> | 2009-06-07 20:38:41 +0000 |
|---|---|---|
| committer | Rick Macklem <rmacklem@FreeBSD.org> | 2009-06-07 20:38:41 +0000 |
| commit | bca2ec16a6d2cd9fc9e287e8e516792c63ecbf34 (patch) | |
| tree | 7be2da1e46f155adfa61f792d1768c5ce5979fed /sys/rpc | |
| parent | dc344ca5a463378a99e22c58e2b8e0b5823cb581 (diff) | |
Notes
Diffstat (limited to 'sys/rpc')
| -rw-r--r-- | sys/rpc/svc.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/sys/rpc/svc.c b/sys/rpc/svc.c index 5db4c565d32f..8c3bd2c96292 100644 --- a/sys/rpc/svc.c +++ b/sys/rpc/svc.c @@ -293,6 +293,8 @@ xprt_unregister_locked(SVCXPRT *xprt) { SVCPOOL *pool = xprt->xp_pool; + KASSERT(xprt->xp_registered == TRUE, + ("xprt_unregister_locked: not registered")); if (xprt->xp_active) { TAILQ_REMOVE(&pool->sp_active, xprt, xp_alink); xprt->xp_active = FALSE; @@ -307,6 +309,11 @@ xprt_unregister(SVCXPRT *xprt) SVCPOOL *pool = xprt->xp_pool; mtx_lock(&pool->sp_lock); + if (xprt->xp_registered == FALSE) { + /* Already unregistered by another thread */ + mtx_unlock(&pool->sp_lock); + return; + } xprt_unregister_locked(xprt); mtx_unlock(&pool->sp_lock); |
