]> git.michaelhowe.org Git - packages/o/openafs.git/commitdiff
DEVEL15-windows-ipaddr-change-server-deadlock-20080130
authorJeffrey Altman <jaltman@secure-endpoints.com>
Wed, 30 Jan 2008 14:57:37 +0000 (14:57 +0000)
committerJeffrey Altman <jaltman@secure-endpoints.com>
Wed, 30 Jan 2008 14:57:37 +0000 (14:57 +0000)
LICENSE MIT

avoid a deadlock during server probes initiated by the ipaddr change
daemon thread.

(missed a case in DELTA windows-ipaddr-change-server-deadlock-20080106)

(cherry picked from commit 162cb95707f739170ab4a025a801a430c86ae70a)

src/WINNT/afsd/cm_server.c

index b3e5e5329bbcd7ae78b2251c76bb4bb00f93582d..7b0314195baff45e6cb6b4c0911ce9f998d99a55 100644 (file)
@@ -175,8 +175,10 @@ cm_PingServer(cm_server_t *tsp)
                     if (tsrvp->ids[i] != 0) {
                         cm_InitReq(&req);
 
+                        lock_ReleaseMutex(&tsp->mx);
                         code = cm_GetVolumeByID(tsp->cellp, tsrvp->ids[i], cm_rootUserp,
                                                 &req, CM_GETVOL_FLAG_NO_LRU_UPDATE, &volp);
+                        lock_ObtainMutex(&tsp->mx);
                         if (code == 0) {
                             cm_UpdateVolumeStatus(volp, tsrvp->ids[i]);
                             cm_PutVolume(volp);