windows-ipaddr-change-server-deadlock-20080106
authorJeffrey Altman <jaltman@secure-endpoints.com>
Sun, 6 Jan 2008 23:11:01 +0000 (23:11 +0000)
committerJeffrey Altman <jaltman@secure-endpoints.com>
Sun, 6 Jan 2008 23:11:01 +0000 (23:11 +0000)
LICENSE MIT

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

src/WINNT/afsd/cm_server.c

index 493016a..efefdf5 100644 (file)
@@ -134,8 +134,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);