diff options
author | Kinglong Mee <kinglongmee@gmail.com> | 2014-07-09 21:51:27 +0800 |
---|---|---|
committer | J. Bruce Fields <bfields@redhat.com> | 2014-07-11 15:19:25 -0400 |
commit | d5d5c304b13bc3cade13b8a1b5833c8b3a0975f1 (patch) | |
tree | 702bde6d9f9810740dd7fe6e63726aedfbe33ac3 | |
parent | 35e634b83cbe23e5673289d1536752968aab8f75 (diff) | |
download | linux-d5d5c304b13bc3cade13b8a1b5833c8b3a0975f1.tar.gz linux-d5d5c304b13bc3cade13b8a1b5833c8b3a0975f1.tar.bz2 linux-d5d5c304b13bc3cade13b8a1b5833c8b3a0975f1.zip |
NFSD: Fix bad checking of space for padding in splice read
Note that the caller has already reserved space for count and eof, so
xdr->p has already moved past them, only the padding remains.
Signed-off-by: Kinglong Mee <kinglongmee@gmail.com>
Fixes dc97618ddd (nfsd4: separate splice and readv cases)
Signed-off-by: J. Bruce Fields <bfields@redhat.com>
-rw-r--r-- | fs/nfsd/nfs4xdr.c | 7 |
1 files changed, 2 insertions, 5 deletions
diff --git a/fs/nfsd/nfs4xdr.c b/fs/nfsd/nfs4xdr.c index 1ad7bd4e346f..01023a595163 100644 --- a/fs/nfsd/nfs4xdr.c +++ b/fs/nfsd/nfs4xdr.c @@ -3072,11 +3072,8 @@ static __be32 nfsd4_encode_splice_read( __be32 nfserr; __be32 *p = xdr->p - 2; - /* - * Don't inline pages unless we know there's room for eof, - * count, and possible padding: - */ - if (xdr->end - xdr->p < 3) + /* Make sure there will be room for padding if needed */ + if (xdr->end - xdr->p < 1) return nfserr_resource; nfserr = nfsd_splice_read(read->rd_rqstp, file, |