svn commit: r363687 - projects/nfs-over-tls/sys/fs/nfsserver
Rick Macklem
rmacklem at FreeBSD.org
Thu Jul 30 04:06:00 UTC 2020
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) {
More information about the svn-src-projects
mailing list