mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-11-24 01:30:55 +07:00
nfsd: Fixes for nfsd4_encode_read_plus_data()
[ Upstream commit 72d78717c6d06adf65d2e3dccc96d9e9dc978593 ]
Ensure that we encode the data payload + padding, and that we truncate
the preallocated buffer to the actual read size.
Fixes: 528b84934e
("NFSD: Add READ_PLUS data support")
Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
parent
8478091a1b
commit
de82ec8e5e
@ -4632,6 +4632,7 @@ nfsd4_encode_read_plus_data(struct nfsd4_compoundres *resp,
|
||||
resp->rqstp->rq_vec, read->rd_vlen, maxcount, eof);
|
||||
if (nfserr)
|
||||
return nfserr;
|
||||
xdr_truncate_encode(xdr, starting_len + 16 + xdr_align_size(*maxcount));
|
||||
|
||||
tmp = htonl(NFS4_CONTENT_DATA);
|
||||
write_bytes_to_xdr_buf(xdr->buf, starting_len, &tmp, 4);
|
||||
@ -4639,6 +4640,10 @@ nfsd4_encode_read_plus_data(struct nfsd4_compoundres *resp,
|
||||
write_bytes_to_xdr_buf(xdr->buf, starting_len + 4, &tmp64, 8);
|
||||
tmp = htonl(*maxcount);
|
||||
write_bytes_to_xdr_buf(xdr->buf, starting_len + 12, &tmp, 4);
|
||||
|
||||
tmp = xdr_zero;
|
||||
write_bytes_to_xdr_buf(xdr->buf, starting_len + 16 + *maxcount, &tmp,
|
||||
xdr_pad_size(*maxcount));
|
||||
return nfs_ok;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user