Mercurial > illumos > nfs4.1
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); /*