From: Benjamin Coddington Date: Sun, 7 Dec 2014 21:05:48 +0000 (-0500) Subject: nfsd4: fix xdr4 count of server in fs_location4 X-Git-Tag: firefly_0821_release~176^2~2654^2 X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=bf7491f1be5e125eece2ec67e0f79d513caa6c7e;p=firefly-linux-kernel-4.4.55.git nfsd4: fix xdr4 count of server in fs_location4 Fix a bug where nfsd4_encode_components_esc() incorrectly calculates the length of server array in fs_location4--note that it is a count of the number of array elements, not a length in bytes. Signed-off-by: Benjamin Coddington Fixes: 082d4bd72a45 (nfsd4: "backfill" using write_bytes_to_xdr_buf) Cc: stable@vger.kernel.org Signed-off-by: J. Bruce Fields --- diff --git a/fs/nfsd/nfs4xdr.c b/fs/nfsd/nfs4xdr.c index a8549f8fef57..e578c87d5527 100644 --- a/fs/nfsd/nfs4xdr.c +++ b/fs/nfsd/nfs4xdr.c @@ -1817,7 +1817,7 @@ static __be32 nfsd4_encode_components_esc(struct xdr_stream *xdr, char sep, str = end; } - pathlen = htonl(xdr->buf->len - pathlen_offset); + pathlen = htonl(count); write_bytes_to_xdr_buf(xdr->buf, pathlen_offset, &pathlen, 4); return 0; }