From: Jeffrey Altman Date: Tue, 11 Sep 2007 17:13:18 +0000 (+0000) Subject: DEVEL15-windows-getcell-deadlock-20070911 X-Git-Tag: openafs-devel-1_5_25~19 X-Git-Url: https://git.michaelhowe.org/gitweb/?a=commitdiff_plain;h=fb2d2552d98082c08eb6a9903e8bccb9493da3de;p=packages%2Fo%2Fopenafs.git DEVEL15-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. (cherry picked from commit 40090977d270f6113cca4925b9564f57c4917f35) --- diff --git a/src/WINNT/afsd/cm_vnodeops.c b/src/WINNT/afsd/cm_vnodeops.c index 553849af2..2f3f40d1d 100644 --- a/src/WINNT/afsd/cm_vnodeops.c +++ b/src/WINNT/afsd/cm_vnodeops.c @@ -1076,7 +1076,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 */