From 0affa4b86a08c3be9cb4edc4c9f680ae02a2fcd8 Mon Sep 17 00:00:00 2001 From: Jeffrey Altman Date: Wed, 27 Aug 2008 23:01:51 +0000 Subject: [PATCH] windows-callback-lock-order-20080827 LICENSE MIT do not hold cm_server_t mutex when calling cm_FindVolumeByID because the cm_volume_t lock must be obtained ahead of the cm_server_t mutex --- src/WINNT/afsd/cm_callback.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/WINNT/afsd/cm_callback.c b/src/WINNT/afsd/cm_callback.c index 3d0941b..899c9b1 100644 --- a/src/WINNT/afsd/cm_callback.c +++ b/src/WINNT/afsd/cm_callback.c @@ -1963,13 +1963,14 @@ cm_GiveUpAllCallbacks(cm_server_t *tsp, afs_int32 markDown) cm_req_t req; cm_InitReq(&req); - + lock_ReleaseMutex(&tsp->mx); code = cm_FindVolumeByID(tsp->cellp, tsrvp->ids[i], cm_rootUserp, &req, CM_GETVOL_FLAG_NO_LRU_UPDATE | CM_GETVOL_FLAG_NO_RESET, &volp); + lock_ObtainMutex(&tsp->mx); if (code == 0) { cm_UpdateVolumeStatus(volp, tsrvp->ids[i]); cm_PutVolume(volp); - } + } } } } -- 1.9.4