diff options
author | mav <mav@FreeBSD.org> | 2014-06-09 15:00:43 +0000 |
---|---|---|
committer | mav <mav@FreeBSD.org> | 2014-06-09 15:00:43 +0000 |
commit | 9264ec94fea14775eae6ce1ea9f982fb3a25b81e (patch) | |
tree | 1e55c3982fd13e416b6e16b2b14f6a0d5692e6bc /sys/rpc | |
parent | 12a7a792952c2b9d5937ed180b55073879c7aa93 (diff) | |
download | FreeBSD-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.c | 6 |
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); |