DEVEL15-keyring-pag-finduser-requires-glock-20070320
authorChaskiel M Grundman <cg2v@andrew.cmu.edu>
Tue, 20 Mar 2007 18:42:23 +0000 (18:42 +0000)
committerDerrick Brashear <shadow@dementia.org>
Tue, 20 Mar 2007 18:42:23 +0000 (18:42 +0000)
identical to the fix from chas@cmf.nrl.navy.mil

(cherry picked from commit 97d8703809a9e6798b80696da6439ab0887046fb)

src/afs/LINUX/osi_groups.c

index fa1cbe1..997ec7a 100644 (file)
@@ -594,13 +594,18 @@ static void afs_pag_destroy(struct key *key)
 {
     afs_uint32 pag = key->payload.value;
     struct unixuser *pu;
+    int locked = ISAFS_GLOCK();
 
+    if (!locked)
+       AFS_GLOCK();
     pu = afs_FindUser(pag, -1, READ_LOCK);
     if (pu) {
        pu->ct.EndTimestamp = 0;
        pu->tokenTime = 0;
        afs_PutUser(pu, READ_LOCK);
     }
+    if (!locked)
+       AFS_GUNLOCK();
 }
 
 struct key_type key_type_afs_pag =