SOLARIS: Do not release NULL root vp on unmount
authorAndrew Deason <adeason@sinenomine.net>
Fri, 29 Jul 2011 21:44:11 +0000 (16:44 -0500)
committerDerrick Brashear <shadow@dementia.org>
Mon, 1 Aug 2011 12:08:35 +0000 (05:08 -0700)
When we unmount, and afs_globalVp is NULL (e.g. because root.afs was
unavailable when the client was started), we will panic the machine if
we try to release it. So, if afs_globalVp is NULL when we hit our
unmount handler, don't touch it.

Reported by Andy Cobaugh.

Change-Id: I4e5869237e24da320afc2b7edaf8edca0ab3e4e9
Reviewed-on: http://gerrit.openafs.org/5117
Reviewed-by: Derrick Brashear <shadow@dementia.org>
Tested-by: BuildBot <buildbot@rampaginggeek.com>

src/afs/SOLARIS/osi_vfsops.c

index 7d69c34..49f53bc 100644 (file)
@@ -119,11 +119,13 @@ afs_unmount(struct vfs *afsp, int flag, afs_ucred_t *credp)
 
     afsp->vfs_flag |= VFS_UNMOUNTED;
 
-    /* release the root vnode, which should be the last reference to us
-     * besides the caller of afs_unmount */
-    rootvp = afs_globalVp;
-    afs_globalVp = NULL;
-    AFS_RELE(rootvp);
+    if (afs_globalVp) {
+       /* release the root vnode, which should be the last reference to us
+        * besides the caller of afs_unmount */
+       rootvp = afs_globalVp;
+       afs_globalVp = NULL;
+       AFS_RELE(rootvp);
+    }
 
     AFS_GUNLOCK();
     return 0;