SOLARIS: Fix vnode/vcache casts 95/12695/3
authorAndrew Deason <adeason@sinenomine.net>
Thu, 10 Aug 2017 01:06:03 +0000 (20:06 -0500)
committerBenjamin Kaduk <kaduk@mit.edu>
Fri, 15 Feb 2019 14:14:48 +0000 (09:14 -0500)
A few places were using vnodes and vcaches interchangeably. This is
incorrect, since they may not always be the same thing if we stop
embedding vnodes directly in vcaches Fix these to properly go through
AFSTOV/VTOAFS to convert between vcaches and vnodes.

Change-Id: I8a2e42d7b83a5374d2b16b19c47417e7f44d4f27
Reviewed-on: https://gerrit.openafs.org/12695
Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
Reviewed-by: Marcio Brito Barbosa <mbarbosa@sinenomine.net>
Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
Tested-by: Mark Vitale <mvitale@sinenomine.net>

src/afs/SOLARIS/osi_vfsops.c
src/afs/SOLARIS/osi_vnodeops.c

index 86e5f78..cd127e4 100644 (file)
@@ -121,7 +121,7 @@ afs_unmount(struct vfs *afsp, int flag, afs_ucred_t *credp)
         * besides the caller of afs_unmount */
        rootvp = afs_globalVp;
        afs_globalVp = NULL;
-       AFS_RELE(rootvp);
+       AFS_RELE(AFSTOV(rootvp));
     }
 
     AFS_GUNLOCK();
@@ -254,7 +254,11 @@ afs_vget(struct vfs *afsp, struct vnode **avcp, struct fid *fidp)
 
     *avcp = NULL;
     if (!(code = afs_InitReq(&treq, credp))) {
-       code = afs_osi_vget((struct vcache **)avcp, fidp, &treq);
+        struct vcache *tvc = NULL;
+       code = afs_osi_vget(&tvc, fidp, &treq);
+        if (tvc) {
+            *avcp = AFSTOV(tvc);
+        }
     }
 
     afs_Trace3(afs_iclSetp, CM_TRACE_VGET, ICL_TYPE_POINTER, *avcp,
index 3e75a39..361a0e5 100644 (file)
@@ -1433,7 +1433,7 @@ gafs_rename(struct vnode *odvp, char *aname1,
            vn_setpath(afs_globalVp, pvp, vp, aname2, strlen(aname2));
 # endif /* !HAVE_VN_RENAMEPATH */
 
-           AFS_RELE(avcp);
+           AFS_RELE(AFSTOV(avcp));
        }
     }
 #endif