windows-getcell-deadlock-20070911

don't hold the cm_scache_t mutex across calls to cm_GetCell() since
cm_GetCell() can block in an RPC call.  If that cm_scache_t must be
accessed to revoke a callback, it can result in a deadlock.
This commit is contained in:
Jeffrey Altman 2007-09-11 17:11:54 +00:00
parent c22f945bb7
commit 40090977d2

View File

@ -1074,7 +1074,9 @@ long cm_FollowMountPoint(cm_scache_t *scp, cm_scache_t *dscp, cm_user_t *userp,
strncpy(cellNamep, mpNamep+1, cp - mpNamep - 1);
strcpy(volNamep, cp+1);
/* now look up the cell */
lock_ReleaseMutex(&scp->mx);
cellp = cm_GetCell(cellNamep, CM_FLAG_CREATE);
lock_ObtainMutex(&scp->mx);
}
else {
/* normal mt pt */