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

Commit a54d4059 authored by Chuck Lever's avatar Chuck Lever Committed by Anna Schumaker
Browse files

xprtrdma: Chunk list encoders must not return zero



Clean up, based on code audit: Remove the possibility that the
chunk list XDR encoders can return zero, which would be interpreted
as a NULL.

Signed-off-by: default avatarChuck Lever <chuck.lever@oracle.com>
Tested-by: default avatarSteve Wise <swise@opengridcomputing.com>
Signed-off-by: default avatarAnna Schumaker <Anna.Schumaker@Netapp.com>
parent 7a89f9c6
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -246,6 +246,8 @@ fmr_op_map(struct rpcrdma_xprt *r_xprt, struct rpcrdma_mr_seg *seg,
	}
	mw->mw_nents = i;
	mw->mw_dir = rpcrdma_data_dir(writing);
	if (i == 0)
		goto out_dmamap_err;

	if (!ib_dma_map_sg(r_xprt->rx_ia.ri_device,
			   mw->mw_sg, mw->mw_nents, mw->mw_dir))
+2 −0
Original line number Diff line number Diff line
@@ -411,6 +411,8 @@ frwr_op_map(struct rpcrdma_xprt *r_xprt, struct rpcrdma_mr_seg *seg,
	}
	mw->mw_nents = i;
	mw->mw_dir = rpcrdma_data_dir(writing);
	if (i == 0)
		goto out_dmamap_err;

	dma_nents = ib_dma_map_sg(ia->ri_device,
				  mw->mw_sg, mw->mw_nents, mw->mw_dir);
+3 −3
Original line number Diff line number Diff line
@@ -329,7 +329,7 @@ rpcrdma_encode_read_list(struct rpcrdma_xprt *r_xprt,

	do {
		n = r_xprt->rx_ia.ri_ops->ro_map(r_xprt, seg, nsegs, false);
		if (n <= 0)
		if (n < 0)
			return ERR_PTR(n);

		*iptr++ = xdr_one;	/* item present */
@@ -397,7 +397,7 @@ rpcrdma_encode_write_list(struct rpcrdma_xprt *r_xprt, struct rpcrdma_req *req,
	nchunks = 0;
	do {
		n = r_xprt->rx_ia.ri_ops->ro_map(r_xprt, seg, nsegs, true);
		if (n <= 0)
		if (n < 0)
			return ERR_PTR(n);

		iptr = xdr_encode_rdma_segment(iptr, seg);
@@ -462,7 +462,7 @@ rpcrdma_encode_reply_chunk(struct rpcrdma_xprt *r_xprt,
	nchunks = 0;
	do {
		n = r_xprt->rx_ia.ri_ops->ro_map(r_xprt, seg, nsegs, true);
		if (n <= 0)
		if (n < 0)
			return ERR_PTR(n);

		iptr = xdr_encode_rdma_segment(iptr, seg);