ukernel: Fix AFS_GUNLOCK panic in rx_ServerProc 63/14963/2
authorCheyenne Wills <cwills@sinenomine.net>
Wed, 25 May 2022 18:54:50 +0000 (12:54 -0600)
committerBenjamin Kaduk <kaduk@mit.edu>
Thu, 26 May 2022 04:12:54 +0000 (00:12 -0400)
At the beginning of UKERNEL's rx_ServerProc a call to AFS_GUNLOCK
panics with 'afs global lock not held'.

The commit 'afs: Drop GLOCK for various Rx calls' (d5e1428a3b) altered
afs_RXCallBackServer so the global lock is released prior to calling
rx_ServerProc, and to reacquire the lock after rx_ServerProc returns.

Remove the AFS_GUNLOCK at the start and the AFS_GLOCK at the end of
UKERNEL's rx_ServerProc.

Change-Id: Id0e2fef574e4d3473e83f77615d194448f55ab47
Reviewed-on: https://gerrit.openafs.org/14963
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>

src/rx/UKERNEL/rx_knet.c

index 2f7c6c5..66f6f01 100644 (file)
@@ -155,7 +155,6 @@ rx_ServerProc(void *unused)
      * number of threads handling incoming calls */
     threadID = rxi_availProcs++;
 
-    AFS_GUNLOCK();
     while (1) {
        sock = OSI_NULLSOCKET;
        rxi_ServerProc(threadID, newcall, &sock);
@@ -168,7 +167,6 @@ rx_ServerProc(void *unused)
        /* assert(threadID != -1); */
        /* assert(newcall != NULL); */
     }
-    AFS_GLOCK();
     return NULL;
 }