linux-alloc-dont-drop-what-you-dont-have-20020801
authorChas Williams <chas@cmf.nrl.navy.mil>
Thu, 1 Aug 2002 17:11:35 +0000 (17:11 +0000)
committerDerrick Brashear <shadow@dementia.org>
Thu, 1 Aug 2002 17:11:35 +0000 (17:11 +0000)
avoid trying to drop a glock we don't have

src/afs/LINUX/osi_alloc.c

index 9077db8..a89a74d 100644 (file)
@@ -80,6 +80,7 @@ static void *linux_alloc(unsigned int asize, int drop_glock)
 {
     void *new = NULL;
     int max_retry = 10;
+    int haveGlock = ISAFS_GLOCK();
 
     /*  if we can use kmalloc use it to allocate the required memory. */
     while(!new && max_retry)
@@ -106,9 +107,9 @@ static void *linux_alloc(unsigned int asize, int drop_glock)
 #else
            current->state = TASK_INTERRUPTIBLE;
 #endif
-           if (drop_glock) AFS_GUNLOCK();
+           if (drop_glock && haveGlock) AFS_GUNLOCK();
            schedule_timeout(HZ);
-           if (drop_glock) AFS_GLOCK();
+           if (drop_glock && haveGlock) AFS_GLOCK();
 #ifdef set_current_state
             set_current_state(TASK_RUNNING);
 #else