NFSv4: Fix pointer arithmetic in decode_getacl
authorTrond Myklebust <Trond.Myklebust@netapp.com>
Tue, 14 Aug 2012 21:30:10 +0000 (17:30 -0400)
committerTrond Myklebust <Trond.Myklebust@netapp.com>
Thu, 16 Aug 2012 20:15:50 +0000 (16:15 -0400)
commit519d3959e30a98f8e135e7a16647c10af5ad63d5
tree95d4ba3b32892b4145f6054684102c83aca65025
parent425e776d93a7a5070b77d4f458a5bab0f924652c
NFSv4: Fix pointer arithmetic in decode_getacl

Resetting the cursor xdr->p to a previous value is not a safe
practice: if the xdr_stream has crossed out of the initial iovec,
then a bunch of other fields would need to be reset too.

Fix this issue by using xdr_enter_page() so that the buffer gets
page aligned at the bitmap _before_ we decode it.

Also fix the confusion of the ACL length with the page buffer length
by not adding the base offset to the ACL length...

Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
Cc: stable@vger.kernel.org
fs/nfs/nfs4proc.c
fs/nfs/nfs4xdr.c