From: Jeffrey Altman Date: Sat, 9 Aug 2008 23:31:09 +0000 (+0000) Subject: windows-freelance-deadlock-20080809 X-Git-Tag: openafs-devel-1_5_61~905 X-Git-Url: https://git.michaelhowe.org/gitweb/?a=commitdiff_plain;h=d5af3b4236f72349551ce326d615d2e74d993c97;p=packages%2Fo%2Fopenafs.git windows-freelance-deadlock-20080809 LICENSE MIT avoid a deadlock between cm_freelanceLock and cm_scacheLock --- diff --git a/src/WINNT/afsd/cm_scache.c b/src/WINNT/afsd/cm_scache.c index 86598e1fb..5b7b521b5 100644 --- a/src/WINNT/afsd/cm_scache.c +++ b/src/WINNT/afsd/cm_scache.c @@ -704,13 +704,12 @@ long cm_GetSCache(cm_fid_t *fidp, cm_scache_t **outScpp, cm_user_t *userp, char mp[MOUNTPOINTLEN] = ""; afs_uint32 fileType; + lock_ReleaseWrite(&cm_scacheLock); osi_Log0(afsd_logp,"cm_GetSCache Freelance and special"); if (cm_getLocalMountPointChange()) { // check for changes cm_clearLocalMountPointChange(); // clear the changefile - lock_ReleaseWrite(&cm_scacheLock); cm_reInitLocalMountPoints(); // start reinit - lock_ObtainWrite(&cm_scacheLock); } lock_ObtainMutex(&cm_Freelance_Lock); @@ -726,7 +725,7 @@ long cm_GetSCache(cm_fid_t *fidp, cm_scache_t **outScpp, cm_user_t *userp, } lock_ReleaseMutex(&cm_Freelance_Lock); - + lock_ObtainWrite(&cm_scacheLock); if (scp == NULL) scp = cm_GetNewSCache(); if (scp == NULL) {