nfs: nfs4xdr: introduce decode_verifier helper
Signed-off-by: Benny Halevy <bhalevy@panasas.com> [Trond: Fixed up an 'uninitialised variable' issue in decode_readdir] Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
This commit is contained in:
committed by
Trond Myklebust
parent
07d30434cf
commit
db942bbd09
@@ -3320,17 +3320,19 @@ static int decode_close(struct xdr_stream *xdr, struct nfs_closeres *res)
|
|||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int decode_verifier(struct xdr_stream *xdr, void *verifier)
|
||||||
|
{
|
||||||
|
return decode_opaque_fixed(xdr, verifier, 8);
|
||||||
|
}
|
||||||
|
|
||||||
static int decode_commit(struct xdr_stream *xdr, struct nfs_writeres *res)
|
static int decode_commit(struct xdr_stream *xdr, struct nfs_writeres *res)
|
||||||
{
|
{
|
||||||
__be32 *p;
|
|
||||||
int status;
|
int status;
|
||||||
|
|
||||||
status = decode_op_hdr(xdr, OP_COMMIT);
|
status = decode_op_hdr(xdr, OP_COMMIT);
|
||||||
if (status)
|
if (!status)
|
||||||
|
status = decode_verifier(xdr, res->verf->verifier);
|
||||||
return status;
|
return status;
|
||||||
READ_BUF(8);
|
|
||||||
COPYMEM(res->verf->verifier, 8);
|
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static int decode_create(struct xdr_stream *xdr, struct nfs4_change_info *cinfo)
|
static int decode_create(struct xdr_stream *xdr, struct nfs4_change_info *cinfo)
|
||||||
@@ -3852,17 +3854,17 @@ static int decode_readdir(struct xdr_stream *xdr, struct rpc_rqst *req, struct n
|
|||||||
int status;
|
int status;
|
||||||
|
|
||||||
status = decode_op_hdr(xdr, OP_READDIR);
|
status = decode_op_hdr(xdr, OP_READDIR);
|
||||||
if (status)
|
if (!status)
|
||||||
|
status = decode_verifier(xdr, readdir->verifier.data);
|
||||||
|
if (unlikely(status))
|
||||||
return status;
|
return status;
|
||||||
READ_BUF(8);
|
|
||||||
COPYMEM(readdir->verifier.data, 8);
|
|
||||||
dprintk("%s: verifier = %08x:%08x\n",
|
dprintk("%s: verifier = %08x:%08x\n",
|
||||||
__func__,
|
__func__,
|
||||||
((u32 *)readdir->verifier.data)[0],
|
((u32 *)readdir->verifier.data)[0],
|
||||||
((u32 *)readdir->verifier.data)[1]);
|
((u32 *)readdir->verifier.data)[1]);
|
||||||
|
|
||||||
|
|
||||||
hdrlen = (char *) p - (char *) iov->iov_base;
|
hdrlen = (char *) xdr->p - (char *) iov->iov_base;
|
||||||
recvd = rcvbuf->len - hdrlen;
|
recvd = rcvbuf->len - hdrlen;
|
||||||
if (pglen > recvd)
|
if (pglen > recvd)
|
||||||
pglen = recvd;
|
pglen = recvd;
|
||||||
|
Reference in New Issue
Block a user