svn commit: r225358 - stable/8/sys/fs/nfsserver
Rick Macklem
rmacklem at FreeBSD.org
Sat Sep 3 01:45:37 UTC 2011
Author: rmacklem
Date: Sat Sep 3 01:45:37 2011
New Revision: 225358
URL: http://svn.freebsd.org/changeset/base/225358
Log:
MFC: r225049
Fix the NFSv4 server so that it returns NFSERR_SYMLINK when
an attempt to do an Open operation on any type of file other
than VREG is done. A recent discussion on the IETF working group's
mailing list (nfsv4 at ietf.org) decided that NFSERR_SYMLINK
should be returned for all non-regular files and not just symlinks,
so that the Linux client would work correctly.
This change does not affect the FreeBSD NFSv4 client and is not
believed to have a negative effect on other NFSv4 clients.
Modified:
stable/8/sys/fs/nfsserver/nfs_nfsdserv.c
Directory Properties:
stable/8/sys/ (props changed)
stable/8/sys/amd64/include/xen/ (props changed)
stable/8/sys/cddl/contrib/opensolaris/ (props changed)
stable/8/sys/contrib/dev/acpica/ (props changed)
stable/8/sys/contrib/pf/ (props changed)
Modified: stable/8/sys/fs/nfsserver/nfs_nfsdserv.c
==============================================================================
--- stable/8/sys/fs/nfsserver/nfs_nfsdserv.c Sat Sep 3 00:47:28 2011 (r225357)
+++ stable/8/sys/fs/nfsserver/nfs_nfsdserv.c Sat Sep 3 01:45:37 2011 (r225358)
@@ -2741,12 +2741,11 @@ nfsrvd_open(struct nfsrv_descript *nd, _
* Do basic access checking.
*/
if (!nd->nd_repstat && vnode_vtype(vp) != VREG) {
- if (vnode_vtype(vp) == VDIR)
- nd->nd_repstat = NFSERR_ISDIR;
- else if (vnode_vtype(vp) == VLNK)
+ /*
+ * The IETF working group decided that this is the correct
+ * error return for all non-regular files.
+ */
nd->nd_repstat = NFSERR_SYMLINK;
- else
- nd->nd_repstat = NFSERR_INVAL;
}
if (!nd->nd_repstat && (stp->ls_flags & NFSLCK_WRITEACCESS))
nd->nd_repstat = nfsvno_accchk(vp, VWRITE, nd->nd_cred,
More information about the svn-src-stable-8
mailing list