]> git.michaelhowe.org Git - packages/o/openafs.git/commitdiff
STABLE14-linux-afs-put-inode-dont-race-20051128
authorChas Williams <chas@cmf.nrl.navy.mil>
Tue, 29 Nov 2005 03:20:28 +0000 (03:20 +0000)
committerDerrick Brashear <shadow@dementia.org>
Tue, 29 Nov 2005 03:20:28 +0000 (03:20 +0000)
FIXES 23318

hold lock across refcount check. oops

(cherry picked from commit bb7b7cef7916787f55f51a6dc070e1fa4ca08021)

src/afs/LINUX/osi_vfsops.c

index 8d6ce9bddc95cc7fb5e79e5b149512ae8d0803f4..63d14577b976abb499b452799a9aa08f4239696c 100644 (file)
@@ -343,12 +343,12 @@ afs_put_inode(struct inode *ip)
 {
     struct vcache *vcp = VTOAFS(ip);
 
+    AFS_GLOCK();
     if (VREFCOUNT(vcp) == 2) {
-       AFS_GLOCK();
        if (VREFCOUNT(vcp) == 2)
            afs_InactiveVCache(vcp, NULL);
-       AFS_GUNLOCK();
     }
+    AFS_GUNLOCK();
 }
 
 /* afs_put_super