From: Trond Myklebust Date: Tue, 8 Dec 2020 12:40:04 +0000 (-0500) Subject: NFSv4.2: decode_read_plus_data() must skip padding after data segment X-Git-Url: http://git.maquefel.me/?a=commitdiff_plain;h=5c4afe2ab624cb8156e987ff929e00632fb56aeb;p=linux.git NFSv4.2: decode_read_plus_data() must skip padding after data segment All XDR opaque object sizes are 32-bit aligned, and a data segment is no exception. Signed-off-by: Trond Myklebust --- diff --git a/fs/nfs/nfs42xdr.c b/fs/nfs/nfs42xdr.c index 1c21db640f4d9..4c6bce3dbaeba 100644 --- a/fs/nfs/nfs42xdr.c +++ b/fs/nfs/nfs42xdr.c @@ -1038,7 +1038,9 @@ static int decode_read_plus_data(struct xdr_stream *xdr, struct nfs_pgio_res *re p = xdr_decode_hyper(p, &offset); count = be32_to_cpup(p); - recvd = xdr_align_data(xdr, res->count, count); + recvd = xdr_align_data(xdr, res->count, xdr_align_size(count)); + if (recvd > count) + recvd = count; res->count += recvd; if (count > recvd) {