]> git.michaelhowe.org Git - packages/o/openafs.git/commitdiff
* Apply upstream patch to crashes on contention in afs_xuser when a
authorRuss Allbery <rra@debian.org>
Thu, 19 Apr 2007 20:14:31 +0000 (20:14 +0000)
committerRuss Allbery <rra@debian.org>
Thu, 19 Apr 2007 20:14:31 +0000 (20:14 +0000)
  process in a PAG exits.  Thanks, Chaskiel Grundman.

debian/changelog
src/afs/LINUX/osi_groups.c

index 2c87928a160191363625f2bd7fd15dd14bbc232c..059b59cb7dff9e82fcc42c93da24be914e07d77b 100644 (file)
@@ -10,6 +10,8 @@ openafs (1.4.4.dfsg1-2) unstable; urgency=low
     with i386 and amd64.  Newer versions of glibc change internal
     structures in ways that cause the old LWP code to have stack
     overflows.  (Closes: #419903)
+  * Apply upstream patch to crashes on contention in afs_xuser when a
+    process in a PAG exits.  Thanks, Chaskiel Grundman.
   * When determining the AFS sysname for kernel module builds, add
     explicit cases for 2.6 kernels for all architectures that support them
     (everything except non-64-bit sparc_linux).  Fixes build problems with
index ab43b9cba9abaa7b6d1d961eaccb125cb7856d3c..f1fc6bb26a03f7bf02a60f65217fb515561fa56b 100644 (file)
@@ -595,13 +595,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 =