Properly AFS_GUNLOCK() when returning an error after having previously
authorNickolai Zeldovich <kolya@mit.edu>
Fri, 8 Feb 2002 07:05:34 +0000 (07:05 +0000)
committerNickolai Zeldovich <kolya@mit.edu>
Fri, 8 Feb 2002 07:05:34 +0000 (07:05 +0000)
AFS_GLOCK()'ed, in afs_mount() and afs_unmount().

src/afs/SOLARIS/osi_vfsops.c

index 1a92793..2a7d435 100644 (file)
@@ -41,11 +41,14 @@ int afs_mount(struct vfs *afsp, struct vnode *amvp, struct mounta *uap,
 
     AFS_STATCNT(afs_mount);
 
-    if (!suser(credp))
+    if (!suser(credp)) {
+       AFS_GUNLOCK();
        return EPERM;
+    }
     afsp->vfs_fstype = afsfstype;
 
     if (afs_globalVFS) { /* Don't allow remounts. */
+       AFS_GUNLOCK();
        return EBUSY;
     }
 
@@ -68,8 +71,10 @@ int afs_unmount (struct vfs *afsp, struct AFS_UCRED *credp)
     AFS_GLOCK();
     AFS_STATCNT(afs_unmount);
 
-    if (!suser(credp))
+    if (!suser(credp)) {
+       AFS_GUNLOCK();
        return EPERM;
+    }
     afs_globalVFS = 0;
     afs_shutdown();