From 91bef849e58ff45fbcac3107fbc7c19d2bc88b7e Mon Sep 17 00:00:00 2001 From: Jeffrey Altman Date: Sun, 18 Apr 2010 18:20:52 +0100 Subject: [PATCH] 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 --- src/WINNT/afsd/cm_server.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/WINNT/afsd/cm_server.c b/src/WINNT/afsd/cm_server.c index 3619dcf77..0d2ac9e07 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); } -- 2.39.5