From: Jeffrey Altman Date: Sun, 18 Apr 2010 17:20:52 +0000 (+0100) Subject: Windows: correct locking in cm_FreeServerList X-Git-Tag: openafs-devel-1_5_74~4 X-Git-Url: https://git.openafs.org/?p=openafs.git;a=commitdiff_plain;h=91bef849e58ff45fbcac3107fbc7c19d2bc88b7e Windows: correct locking in cm_FreeServerList The cm_serverLock must be held when checking the state of the list head. LICENSE MIT Change-Id: I1134a6617d4c1e38b95512b1fdc41c5f5857ea7a Reviewed-on: http://gerrit.openafs.org/1774 Reviewed-by: Asanka Herath Tested-by: Asanka Herath Reviewed-by: Jeffrey Altman Tested-by: Jeffrey Altman --- diff --git a/src/WINNT/afsd/cm_server.c b/src/WINNT/afsd/cm_server.c index 3619dcf..0d2ac9e 100644 --- a/src/WINNT/afsd/cm_server.c +++ b/src/WINNT/afsd/cm_server.c @@ -1383,11 +1383,11 @@ void cm_FreeServerList(cm_serverRef_t** list, afs_uint32 flags) cm_serverRef_t **nextp = 0; cm_serverRef_t * next = 0; - if (*list == NULL) - return; - lock_ObtainWrite(&cm_serverLock); + if (*list == NULL) + goto done; + while (*current) { nextp = &(*current)->next; @@ -1409,6 +1409,8 @@ void cm_FreeServerList(cm_serverRef_t** list, afs_uint32 flags) } } + done: + lock_ReleaseWrite(&cm_serverLock); }