Commit a73bed98 authored by Chuck Lever's avatar Chuck Lever
Browse files

NFSD: Replace READ* macros in nfsd4_decode_putfh()

parent dca71651
Loading
Loading
Loading
Loading
+12 −7
Original line number Diff line number Diff line
@@ -1190,16 +1190,21 @@ nfsd4_decode_open_downgrade(struct nfsd4_compoundargs *argp, struct nfsd4_open_d
static __be32
nfsd4_decode_putfh(struct nfsd4_compoundargs *argp, struct nfsd4_putfh *putfh)
{
	DECODE_HEAD;
	__be32 *p;

	READ_BUF(4);
	putfh->pf_fhlen = be32_to_cpup(p++);
	if (xdr_stream_decode_u32(argp->xdr, &putfh->pf_fhlen) < 0)
		return nfserr_bad_xdr;
	if (putfh->pf_fhlen > NFS4_FHSIZE)
		goto xdr_error;
	READ_BUF(putfh->pf_fhlen);
	SAVEMEM(putfh->pf_fhval, putfh->pf_fhlen);
		return nfserr_bad_xdr;
	p = xdr_inline_decode(argp->xdr, putfh->pf_fhlen);
	if (!p)
		return nfserr_bad_xdr;
	putfh->pf_fhval = svcxdr_tmpalloc(argp, putfh->pf_fhlen);
	if (!putfh->pf_fhval)
		return nfserr_jukebox;
	memcpy(putfh->pf_fhval, p, putfh->pf_fhlen);

	DECODE_TAIL;
	return nfs_ok;
}

static __be32