From: Jeffrey Altman Date: Tue, 7 Jan 2014 15:53:37 +0000 (-0500) Subject: Windows: cm_connLock not required for cm_GetUCell X-Git-Tag: upstream/1.8.0_pre1^2~860 X-Git-Url: https://git.michaelhowe.org/gitweb/?a=commitdiff_plain;h=cccb5e614212c341d2f5e799066d1c30e54ba494;p=packages%2Fo%2Fopenafs.git Windows: cm_connLock not required for cm_GetUCell In cm_ConnByServer() there is no need to hold the cm_connLock across the cm_GetUCell() call. Obtain the cm_ucell_t object before the cm_connLock is obtained. Change-Id: I971b55e0aae7748b59895785c1c22b5461c4fd35 Reviewed-on: http://gerrit.openafs.org/10680 Tested-by: BuildBot Reviewed-by: Jeffrey Altman --- diff --git a/src/WINNT/afsd/cm_conn.c b/src/WINNT/afsd/cm_conn.c index 642b76668..4f0ce229b 100644 --- a/src/WINNT/afsd/cm_conn.c +++ b/src/WINNT/afsd/cm_conn.c @@ -1655,6 +1655,9 @@ long cm_ConnByServer(cm_server_t *serverp, cm_user_t *userp, afs_uint32 replicat userp = cm_rootUserp; lock_ObtainMutex(&userp->mx); + /* find ucell structure */ + ucellp = cm_GetUCell(userp, serverp->cellp); + lock_ObtainRead(&cm_connLock); for (tcp = serverp->connsp; tcp; tcp=tcp->nextp) { if (tcp->userp == userp && @@ -1663,8 +1666,6 @@ long cm_ConnByServer(cm_server_t *serverp, cm_user_t *userp, afs_uint32 replicat break; } - /* find ucell structure */ - ucellp = cm_GetUCell(userp, serverp->cellp); if (!tcp) { lock_ConvertRToW(&cm_connLock); for (tcp = serverp->connsp; tcp; tcp=tcp->nextp) {