]> git.michaelhowe.org Git - packages/o/openafs.git/commitdiff
STABLE12-attachserverproc-dont-dequeue-if-not-in-queue-take-two-20040818
authorDerrick Brashear <shadow@dementia.org>
Mon, 18 Oct 2004 04:34:30 +0000 (04:34 +0000)
committerDerrick Brashear <shadow@dementia.org>
Mon, 18 Oct 2004 04:34:30 +0000 (04:34 +0000)
nWaiting ended up negative, because the dequeuer (GetCall) decremented.

(cherry picked from commit 399785acf166dac15123889c28974ff06d6d2de0)

src/rx/rx.c

index cc11cb3d634c552cb592da5b29d0866806552e4c..369dbbc29d7d833f916b85b9e4eae37c691b52b6 100644 (file)
@@ -3989,11 +3989,12 @@ rxi_AttachServerProc(call, socket, tnop, newcallp)
        if (call->flags & RX_CALL_WAIT_PROC) {
            /* Conservative:  I don't think this should happen */
            call->flags &= ~RX_CALL_WAIT_PROC;
-           MUTEX_ENTER(&rx_stats_mutex);
-           rx_nWaiting--;
-           MUTEX_EXIT(&rx_stats_mutex);
-           if (queue_IsOnQueue(call))
+           if (queue_IsOnQueue(call)) {
                queue_Remove(call);
+               MUTEX_ENTER(&rx_stats_mutex);
+               rx_nWaiting--;
+               MUTEX_EXIT(&rx_stats_mutex);
+           }
        }
        call->state = RX_STATE_ACTIVE;
        call->mode = RX_MODE_RECEIVING;