aboutsummaryrefslogtreecommitdiff
path: root/sys/rpc/svc.c
diff options
context:
space:
mode:
authorAlexander Motin <mav@FreeBSD.org>2014-06-09 15:00:43 +0000
committerAlexander Motin <mav@FreeBSD.org>2014-06-09 15:00:43 +0000
commit82dcc80db10592f5b01d02b7714e624ba1d611ab (patch)
tree1e55c3982fd13e416b6e16b2b14f6a0d5692e6bc /sys/rpc/svc.c
parentada17d7bde4a06a86e408dd338e27bc82f312fba (diff)
downloadsrc-82dcc80db10592f5b01d02b7714e624ba1d611ab.tar.gz
src-82dcc80db10592f5b01d02b7714e624ba1d611ab.zip
Fix race in r267221.
MFC after: 2 weeks
Notes
Notes: svn path=/head/; revision=267278
Diffstat (limited to 'sys/rpc/svc.c')
-rw-r--r--sys/rpc/svc.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/sys/rpc/svc.c b/sys/rpc/svc.c
index b682b39d4f33..95d4c49c1ab0 100644
--- a/sys/rpc/svc.c
+++ b/sys/rpc/svc.c
@@ -1210,15 +1210,17 @@ svc_run_internal(SVCGROUP *grp, bool_t ismaster)
*/
if (pool->sp_assign) {
stpref = pool->sp_assign(st, rqstp);
+ rqstp->rq_thread = stpref;
STAILQ_INSERT_TAIL(&stpref->st_reqs,
rqstp, rq_link);
mtx_unlock(&stpref->st_lock);
- rqstp->rq_thread = stpref;
if (stpref != st)
rqstp = NULL;
- } else
+ } else {
+ rqstp->rq_thread = st;
STAILQ_INSERT_TAIL(&st->st_reqs,
rqstp, rq_link);
+ }
}
} while (rqstp == NULL && stat == XPRT_MOREREQS
&& grp->sg_state != SVCPOOL_CLOSING);