From d5af3b4236f72349551ce326d615d2e74d993c97 Mon Sep 17 00:00:00 2001 From: Jeffrey Altman Date: Sat, 9 Aug 2008 23:31:09 +0000 Subject: [PATCH] windows-freelance-deadlock-20080809 LICENSE MIT avoid a deadlock between cm_freelanceLock and cm_scacheLock --- src/WINNT/afsd/cm_scache.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) 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) { -- 2.39.5