Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit db942bbd authored by Benny Halevy's avatar Benny Halevy Committed by Trond Myklebust
Browse files

nfs: nfs4xdr: introduce decode_verifier helper



Signed-off-by: default avatarBenny Halevy <bhalevy@panasas.com>
[Trond: Fixed up an 'uninitialised variable' issue in decode_readdir]
Signed-off-by: default avatarTrond Myklebust <Trond.Myklebust@netapp.com>
parent 07d30434
Loading
Loading
Loading
Loading
+12 −10
Original line number Original line Diff line number Diff line
@@ -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;