From: Ben Kaduk Date: Sun, 19 Dec 2010 05:06:13 +0000 (-0500) Subject: FBSD: StopListener glocking fixup X-Git-Tag: upstream/1.8.0_pre1^2~4352 X-Git-Url: https://git.michaelhowe.org/gitweb/?a=commitdiff_plain;h=28032bc1c1aaa4c25e94025a8fa9e2b4e8131ce3;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: I38c3ab6689a6af7f1693bd3c8348068ee280e530 Reviewed-on: http://gerrit.openafs.org/3549 Reviewed-by: Derrick Brashear Tested-by: BuildBot --- 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);