Commit 89c485c7 authored by Chuck Lever's avatar Chuck Lever
Browse files

NLM: Fix svcxdr_encode_owner()



Dai Ngo reports that, since the XDR overhaul, the NLM server crashes
when the TEST procedure wants to return NLM_DENIED. There is a bug
in svcxdr_encode_owner() that none of our standard test cases found.

Replace the open-coded function with a call to an appropriate
pre-fabricated XDR helper.

Reported-by: default avatarDai Ngo <Dai.Ngo@oracle.com>
Fixes: a6a63ca5 ("lockd: Common NLM XDR helpers")
Signed-off-by: default avatarChuck Lever <chuck.lever@oracle.com>
parent 0c217d50
Loading
Loading
Loading
Loading
+2 −11
Original line number Diff line number Diff line
@@ -134,18 +134,9 @@ svcxdr_decode_owner(struct xdr_stream *xdr, struct xdr_netobj *obj)
static inline bool
svcxdr_encode_owner(struct xdr_stream *xdr, const struct xdr_netobj *obj)
{
	unsigned int quadlen = XDR_QUADLEN(obj->len);
	__be32 *p;

	if (xdr_stream_encode_u32(xdr, obj->len) < 0)
		return false;
	p = xdr_reserve_space(xdr, obj->len);
	if (!p)
	if (obj->len > XDR_MAX_NETOBJ)
		return false;
	p[quadlen - 1] = 0;	/* XDR pad */
	memcpy(p, obj->data, obj->len);

	return true;
	return xdr_stream_encode_opaque(xdr, obj->data, obj->len) > 0;
}

#endif /* _LOCKD_SVCXDR_H_ */