From b5cf6d7984465891b5cff13b3edf7410bbbdb187 Mon Sep 17 00:00:00 2001 From: Kirk McKusick Date: Tue, 29 Sep 1998 23:39:37 +0000 Subject: In nfs_link(), check for a cross-device mount *before* looking in the v_data field. Obtained from: Charles Hannum, via Frank van der Linden --- sys/nfs/nfs_vnops.c | 5 +++-- sys/nfsclient/nfs_vnops.c | 5 +++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/sys/nfs/nfs_vnops.c b/sys/nfs/nfs_vnops.c index 0e99280e0404..e4917c1d5616 100644 --- a/sys/nfs/nfs_vnops.c +++ b/sys/nfs/nfs_vnops.c @@ -34,7 +34,7 @@ * SUCH DAMAGE. * * @(#)nfs_vnops.c 8.16 (Berkeley) 5/27/95 - * $Id: nfs_vnops.c,v 1.106 1998/08/13 08:09:08 dfr Exp $ + * $Id: nfs_vnops.c,v 1.108 1998/09/29 23:29:48 mckusick Exp $ */ @@ -1700,7 +1700,7 @@ nfs_link(ap) caddr_t bpos, dpos, cp2; int error = 0, wccflag = NFSV3_WCCRATTR, attrflag = 0; struct mbuf *mreq, *mrep, *md, *mb, *mb2; - int v3 = NFS_ISV3(vp); + int v3; if (vp->v_mount != tdvp->v_mount) { VOP_ABORTOP(tdvp, cnp); @@ -1715,6 +1715,7 @@ nfs_link(ap) */ VOP_FSYNC(vp, cnp->cn_cred, MNT_WAIT, cnp->cn_proc); + v3 = NFS_ISV3(vp); nfsstats.rpccnt[NFSPROC_LINK]++; nfsm_reqhead(vp, NFSPROC_LINK, NFSX_FH(v3)*2 + NFSX_UNSIGNED + nfsm_rndup(cnp->cn_namelen)); diff --git a/sys/nfsclient/nfs_vnops.c b/sys/nfsclient/nfs_vnops.c index 0e99280e0404..e4917c1d5616 100644 --- a/sys/nfsclient/nfs_vnops.c +++ b/sys/nfsclient/nfs_vnops.c @@ -34,7 +34,7 @@ * SUCH DAMAGE. * * @(#)nfs_vnops.c 8.16 (Berkeley) 5/27/95 - * $Id: nfs_vnops.c,v 1.106 1998/08/13 08:09:08 dfr Exp $ + * $Id: nfs_vnops.c,v 1.108 1998/09/29 23:29:48 mckusick Exp $ */ @@ -1700,7 +1700,7 @@ nfs_link(ap) caddr_t bpos, dpos, cp2; int error = 0, wccflag = NFSV3_WCCRATTR, attrflag = 0; struct mbuf *mreq, *mrep, *md, *mb, *mb2; - int v3 = NFS_ISV3(vp); + int v3; if (vp->v_mount != tdvp->v_mount) { VOP_ABORTOP(tdvp, cnp); @@ -1715,6 +1715,7 @@ nfs_link(ap) */ VOP_FSYNC(vp, cnp->cn_cred, MNT_WAIT, cnp->cn_proc); + v3 = NFS_ISV3(vp); nfsstats.rpccnt[NFSPROC_LINK]++; nfsm_reqhead(vp, NFSPROC_LINK, NFSX_FH(v3)*2 + NFSX_UNSIGNED + nfsm_rndup(cnp->cn_namelen)); -- cgit v1.3