windows-ipaddr-change-server-deadlock-20080130
authorJeffrey Altman <jaltman@secure-endpoints.com>
Wed, 30 Jan 2008 14:53:44 +0000 (14:53 +0000)
committerJeffrey Altman <jaltman@secure-endpoints.com>
Wed, 30 Jan 2008 14:53:44 +0000 (14:53 +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)

src/WINNT/afsd/cm_server.c

index b7d0acc..a64cfed 100644 (file)
@@ -171,8 +171,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);