]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
nfsd4: fix xdr4 count of server in fs_location4
authorBenjamin Coddington <bcodding@redhat.com>
Sun, 7 Dec 2014 21:05:48 +0000 (16:05 -0500)
committerLuis Henriques <luis.henriques@canonical.com>
Thu, 15 Jan 2015 10:43:44 +0000 (10:43 +0000)
commit bf7491f1be5e125eece2ec67e0f79d513caa6c7e upstream.

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 <bcodding@redhat.com>
Fixes: 082d4bd72a45 (nfsd4: "backfill" using write_bytes_to_xdr_buf)
Signed-off-by: J. Bruce Fields <bfields@redhat.com>
Signed-off-by: Luis Henriques <luis.henriques@canonical.com>
fs/nfsd/nfs4xdr.c

index 69f15dc9e16bb9f110b6641618aea03bcb367201..dda2e4d91a2564344b1a5e43a157f55d21359481 100644 (file)
@@ -1782,7 +1782,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;
 }