Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 30 Jul 2020 04:05:59 +0000 (UTC)
From:      Rick Macklem <rmacklem@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject:   svn commit: r363687 - projects/nfs-over-tls/sys/fs/nfsserver
Message-ID:  <202007300405.06U45x1i061461@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: rmacklem
Date: Thu Jul 30 04:05:59 2020
New Revision: 363687
URL: https://svnweb.freebsd.org/changeset/base/363687

Log:
  Apply a fix to nfsvno_getxattr() that is already in head.

Modified:
  projects/nfs-over-tls/sys/fs/nfsserver/nfs_nfsdport.c
  projects/nfs-over-tls/sys/fs/nfsserver/nfs_nfsdserv.c

Modified: projects/nfs-over-tls/sys/fs/nfsserver/nfs_nfsdport.c
==============================================================================
--- projects/nfs-over-tls/sys/fs/nfsserver/nfs_nfsdport.c	Thu Jul 30 03:21:16 2020	(r363686)
+++ projects/nfs-over-tls/sys/fs/nfsserver/nfs_nfsdport.c	Thu Jul 30 04:05:59 2020	(r363687)
@@ -6359,21 +6359,28 @@ nfsvno_getxattr(struct vnode *vp, char *name, uint32_t
 		return (NFSERR_XATTR2BIG);
 	len = siz;
 	tlen = NFSM_RNDUP(len);
-	/*
-	 * If cnt > MCLBYTES and the reply will not be saved, use
-	 * ext_pgs mbufs for TLS.
-	 * For NFSv4.0, we do not know for sure if the reply will
-	 * be saved, so do not use ext_pgs mbufs for NFSv4.0.
-	 * Always use ext_pgs mbufs if ND_EXTPG is set.
-	 */
-	if ((flag & ND_EXTPG) != 0 || (tlen > MCLBYTES &&
-	    (flag & (ND_TLS | ND_SAVEREPLY)) == ND_TLS &&
-	    (flag & (ND_NFSV4 | ND_NFSV41)) != ND_NFSV4))
-		uiop->uio_iovcnt = nfsrv_createiovec_extpgs(tlen, maxextsiz,
-		    &m, &m2, &iv);
-	else
-		uiop->uio_iovcnt = nfsrv_createiovec(tlen, &m, &m2, &iv);
-	uiop->uio_iov = iv;
+	if (tlen > 0) {
+		/*
+		 * If cnt > MCLBYTES and the reply will not be saved, use
+		 * ext_pgs mbufs for TLS.
+		 * For NFSv4.0, we do not know for sure if the reply will
+		 * be saved, so do not use ext_pgs mbufs for NFSv4.0.
+		 * Always use ext_pgs mbufs if ND_EXTPG is set.
+		 */
+		if ((flag & ND_EXTPG) != 0 || (tlen > MCLBYTES &&
+		    (flag & (ND_TLS | ND_SAVEREPLY)) == ND_TLS &&
+		    (flag & (ND_NFSV4 | ND_NFSV41)) != ND_NFSV4))
+			uiop->uio_iovcnt = nfsrv_createiovec_extpgs(tlen,
+			    maxextsiz, &m, &m2, &iv);
+		else
+			uiop->uio_iovcnt = nfsrv_createiovec(tlen, &m, &m2,
+			    &iv);
+		uiop->uio_iov = iv;
+	} else {
+		uiop->uio_iovcnt = 0;
+		uiop->uio_iov = iv = NULL;
+		m = m2 = NULL;
+	}
 	uiop->uio_offset = 0;
 	uiop->uio_resid = tlen;
 	uiop->uio_rw = UIO_READ;

Modified: projects/nfs-over-tls/sys/fs/nfsserver/nfs_nfsdserv.c
==============================================================================
--- projects/nfs-over-tls/sys/fs/nfsserver/nfs_nfsdserv.c	Thu Jul 30 03:21:16 2020	(r363686)
+++ projects/nfs-over-tls/sys/fs/nfsserver/nfs_nfsdserv.c	Thu Jul 30 04:05:59 2020	(r363687)
@@ -5611,7 +5611,7 @@ nfsrvd_getxattr(struct nfsrv_descript *nd, __unused in
 	if (nd->nd_repstat == 0) {
 		NFSM_BUILD(tl, uint32_t *, NFSX_UNSIGNED);
 		*tl = txdr_unsigned(len);
-		if (mp != NULL) {
+		if (len > 0) {
 			nd->nd_mb->m_next = mp;
 			nd->nd_mb = mpend;
 			if ((mpend->m_flags & M_EXTPG) != 0) {



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202007300405.06U45x1i061461>