From 28032bc1c1aaa4c25e94025a8fa9e2b4e8131ce3 Mon Sep 17 00:00:00 2001 From: Ben Kaduk Date: Sun, 19 Dec 2010 00:06:13 -0500 Subject: [PATCH] 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 --- src/rx/FBSD/rx_knet.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/rx/FBSD/rx_knet.c b/src/rx/FBSD/rx_knet.c index 5cb6956827..c6d2d842df 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);