changeset 13977:d80dd8e0b7af

imported patch pnfs-layout-restrict-read-size
author Vitaliy Gusev <gusev.vitaliy@nexenta.com>
date Thu, 22 Aug 2013 00:00:31 +0400
parents 340a892eedd3
children d2552fbe1de6
files usr/src/uts/common/fs/nfs/nfs41_layout.c
diffstat 1 files changed, 6 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/usr/src/uts/common/fs/nfs/nfs41_layout.c	Thu Aug 22 00:00:17 2013 +0400
+++ b/usr/src/uts/common/fs/nfs/nfs41_layout.c	Thu Aug 22 00:00:31 2013 +0400
@@ -452,7 +452,8 @@
 	struct iovec iov;
 	char *odlp;
 	vattr_t va;
-	int sz, err, bad_file;
+	uint64_t sz;
+	int err;
 
 	*size = 0;
 
@@ -477,15 +478,16 @@
 	err = VOP_GETATTR(vp, &va, 0, CRED(), NULL);
 
 	sz = va.va_size;
-	bad_file = (sz == 0 || sz < sizeof (odl_t));
-
-	if (err || bad_file) {
+	if (err || (sz == 0 || sz < sizeof (odl_t))) {
 		VOP_RWUNLOCK(vp, V_WRITELOCK_FALSE, NULL);
 		(void) VOP_CLOSE(vp, FREAD, 1, (offset_t)0, CRED(), NULL);
 		VN_RELE(vp);
 		return (NULL);
 	}
 
+	if (sz > PNFS_LAYOUT_SZ)
+		sz = PNFS_LAYOUT_SZ;
+
 	odlp = kmem_alloc(sz, KM_SLEEP);
 
 	/*