From 748a3e29b624d10e90af43cb0dc65a4f96c0310e Mon Sep 17 00:00:00 2001 From: Jeffrey Altman Date: Mon, 23 Jul 2012 01:38:03 -0400 Subject: [PATCH] Windows: cm_UpdateVolumeLocation volp locked When calling cm_UpdateVolumeLocation the volp->mx must be held. cm_Analyze() did not obtain the mutex as required. Change-Id: Ida69105879a78692a367cd4439bee8e4bea751ff Reviewed-on: http://gerrit.openafs.org/7839 Tested-by: BuildBot Reviewed-by: Jeffrey Altman Tested-by: Jeffrey Altman --- src/WINNT/afsd/cm_conn.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/WINNT/afsd/cm_conn.c b/src/WINNT/afsd/cm_conn.c index 21044e454..7ba19bbdb 100644 --- a/src/WINNT/afsd/cm_conn.c +++ b/src/WINNT/afsd/cm_conn.c @@ -420,15 +420,18 @@ cm_Analyze(cm_conn_t *connp, CM_GETVOL_FLAG_NO_LRU_UPDATE, &volp); if (code == 0) { + lock_ObtainWrite(&volp->rw); if (cm_UpdateVolumeLocation(cellp, userp, reqp, volp) == 0) { + lock_ReleaseWrite(&volp->rw); code = cm_GetVolServerList(volp, fidp->volume, userp, reqp, &replicated, &serverspp); if (code == 0) { if (!cm_IsServerListEmpty(*serverspp)) retry = 1; cm_FreeServerList(serverspp, 0); } + } else { + lock_ReleaseWrite(&volp->rw); } - lock_ObtainRead(&cm_volumeLock); cm_PutVolume(volp); lock_ReleaseRead(&cm_volumeLock); -- 2.39.5