From: Ben Kaduk Date: Sun, 19 Dec 2010 05:06:13 +0000 (-0500) Subject: FBSD: StopListener glocking fixup X-Git-Tag: upstream/1.6.0.pre2^2~157 X-Git-Url: https://git.michaelhowe.org/gitweb/?a=commitdiff_plain;h=36921e8c26e2f86dbe322e43574d588c767883d6;p=packages%2Fo%2Fopenafs.git FBSD: StopListener glocking fixup afs_osi_Sleep requires the glock (so that it can sleep on it); we dropped the glock earlier in osi_StopListener because soshutdown and soclose can sleep, but we must (unconditionally!) acquire it for our loop waiting on rxk_ListenerPid. Change-Id: Ibea3da2c5d18a2609989b547a1c587c25e3f07ff Reviewed-on: http://gerrit.openafs.org/3549 Reviewed-by: Derrick Brashear Tested-by: BuildBot (cherry picked from commit 28032bc1c1aaa4c25e94025a8fa9e2b4e8131ce3) Reviewed-on: http://gerrit.openafs.org/3633 --- diff --git a/src/rx/FBSD/rx_knet.c b/src/rx/FBSD/rx_knet.c index 5cb695682..c6d2d842d 100644 --- a/src/rx/FBSD/rx_knet.c +++ b/src/rx/FBSD/rx_knet.c @@ -108,11 +108,14 @@ osi_StopListener(void) bzero(&dvec, sizeof(dvec)); dvec.iov_base = &c; dvec.iov_len = 1; + /* afs_osi_Sleep requires the GLOCK */ + AFS_GLOCK(); while(rxk_ListenerPid) { afs_warn("waiting for rxk_ListenerPid to die\n"); osi_NetSend(rx_socket, &taddr, &dvec, 1, 1, 0); afs_osi_Sleep(&rxk_ListenerPid); } + AFS_GUNLOCK(); /* in theory, we are now the only people doing anything with rx_socket */ soclose(rx_socket);