summaryrefslogtreecommitdiffstats
path: root/sys/rpc
diff options
context:
space:
mode:
authormav <mav@FreeBSD.org>2014-06-09 15:00:43 +0000
committermav <mav@FreeBSD.org>2014-06-09 15:00:43 +0000
commit9264ec94fea14775eae6ce1ea9f982fb3a25b81e (patch)
tree1e55c3982fd13e416b6e16b2b14f6a0d5692e6bc /sys/rpc
parent12a7a792952c2b9d5937ed180b55073879c7aa93 (diff)
downloadFreeBSD-src-9264ec94fea14775eae6ce1ea9f982fb3a25b81e.zip
FreeBSD-src-9264ec94fea14775eae6ce1ea9f982fb3a25b81e.tar.gz
Fix race in r267221.
MFC after: 2 weeks
Diffstat (limited to 'sys/rpc')
-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 b682b39..95d4c49 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);
OpenPOWER on IntegriCloud