nfsd: dynamically skip encoded fattr bitmap in _nfsd4_verify

_nfsd4_verify currently skips 3 words from the encoded buffer begining.
With support for 3-word attr bitmaps in nfsd41, nfsd4_encode_fattr
may encode 1, 2, or 3 words, and not always 2 as it used to be, hence
we need to find out where to skip using the encoded bitmap length.

Note: This patch may be applied over pre-nfsd41 nfsd.

Signed-off-by: Benny Halevy <bhalevy@panasas.com>
Signed-off-by: J. Bruce Fields <bfields@citi.umich.edu>
This commit is contained in:
Benny Halevy 2009-04-03 08:29:08 +03:00 committed by J. Bruce Fields
parent c0d6fc8a2d
commit 95ec28cda3

View File

@ -775,7 +775,8 @@ _nfsd4_verify(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,
if (status) if (status)
goto out_kfree; goto out_kfree;
p = buf + 3; /* skip bitmap */
p = buf + 1 + ntohl(buf[0]);
status = nfserr_not_same; status = nfserr_not_same;
if (ntohl(*p++) != verify->ve_attrlen) if (ntohl(*p++) != verify->ve_attrlen)
goto out_kfree; goto out_kfree;