]> git.michaelhowe.org Git - packages/o/openafs.git/commitdiff
DEVEL15-windows-getcell-deadlock-20070911
authorJeffrey Altman <jaltman@secure-endpoints.com>
Tue, 11 Sep 2007 17:13:18 +0000 (17:13 +0000)
committerJeffrey Altman <jaltman@secure-endpoints.com>
Tue, 11 Sep 2007 17:13:18 +0000 (17:13 +0000)
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)

src/WINNT/afsd/cm_vnodeops.c

index 553849af244b6abb69fdc619fdd478560d40efd5..2f3f40d1d6d0c1937ab6a64259f1cda227a29bcd 100644 (file)
@@ -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 */