summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKinglong Mee <kinglongmee@gmail.com>2014-07-09 21:51:27 +0800
committerJ. Bruce Fields <bfields@redhat.com>2014-07-11 15:19:25 -0400
commitd5d5c304b13bc3cade13b8a1b5833c8b3a0975f1 (patch)
tree702bde6d9f9810740dd7fe6e63726aedfbe33ac3
parent35e634b83cbe23e5673289d1536752968aab8f75 (diff)
downloadlinux-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.c7
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,