diff options
author | Chuck Lever <chuck.lever@oracle.com> | 2007-10-26 13:30:43 -0400 |
---|---|---|
committer | Trond Myklebust <Trond.Myklebust@netapp.com> | 2008-01-30 02:05:41 -0500 |
commit | 2a428b2b8fe2c270a5889086ebe3ab914e3ea7d8 (patch) | |
tree | cdd7494963b363fd71bd9c804db24b28bf7c5232 /net | |
parent | c087567d3ffb2c7c61e091982e6ca45478394f1a (diff) |
SUNRPC: Prevent mixed sign comparisons in rpcrdma_convert_iovs()
Keep the type of the buffer position the same during iovec conversion to
reduce the likelihood of unexpected results from comparisons and length
computations.
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Cc: Thomas Talpey <Thomas.Talpey@netapp.com>
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
Diffstat (limited to 'net')
-rw-r--r-- | net/sunrpc/xprtrdma/rpc_rdma.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/net/sunrpc/xprtrdma/rpc_rdma.c b/net/sunrpc/xprtrdma/rpc_rdma.c index 1aa1580cda6d..72c8eab30d9b 100644 --- a/net/sunrpc/xprtrdma/rpc_rdma.c +++ b/net/sunrpc/xprtrdma/rpc_rdma.c | |||
@@ -83,7 +83,7 @@ static const char transfertypes[][12] = { | |||
83 | */ | 83 | */ |
84 | 84 | ||
85 | static int | 85 | static int |
86 | rpcrdma_convert_iovs(struct xdr_buf *xdrbuf, int pos, | 86 | rpcrdma_convert_iovs(struct xdr_buf *xdrbuf, unsigned int pos, |
87 | enum rpcrdma_chunktype type, struct rpcrdma_mr_seg *seg, int nsegs) | 87 | enum rpcrdma_chunktype type, struct rpcrdma_mr_seg *seg, int nsegs) |
88 | { | 88 | { |
89 | int len, n = 0, p; | 89 | int len, n = 0, p; |
@@ -169,7 +169,7 @@ rpcrdma_create_chunks(struct rpc_rqst *rqst, struct xdr_buf *target, | |||
169 | struct rpcrdma_req *req = rpcr_to_rdmar(rqst); | 169 | struct rpcrdma_req *req = rpcr_to_rdmar(rqst); |
170 | struct rpcrdma_xprt *r_xprt = rpcx_to_rdmax(rqst->rq_task->tk_xprt); | 170 | struct rpcrdma_xprt *r_xprt = rpcx_to_rdmax(rqst->rq_task->tk_xprt); |
171 | int nsegs, nchunks = 0; | 171 | int nsegs, nchunks = 0; |
172 | int pos; | 172 | unsigned int pos; |
173 | struct rpcrdma_mr_seg *seg = req->rl_segments; | 173 | struct rpcrdma_mr_seg *seg = req->rl_segments; |
174 | struct rpcrdma_read_chunk *cur_rchunk = NULL; | 174 | struct rpcrdma_read_chunk *cur_rchunk = NULL; |
175 | struct rpcrdma_write_array *warray = NULL; | 175 | struct rpcrdma_write_array *warray = NULL; |
@@ -213,7 +213,7 @@ rpcrdma_create_chunks(struct rpc_rqst *rqst, struct xdr_buf *target, | |||
213 | (__be32 *)&cur_rchunk->rc_target.rs_offset, | 213 | (__be32 *)&cur_rchunk->rc_target.rs_offset, |
214 | seg->mr_base); | 214 | seg->mr_base); |
215 | dprintk("RPC: %s: read chunk " | 215 | dprintk("RPC: %s: read chunk " |
216 | "elem %d@0x%llx:0x%x pos %d (%s)\n", __func__, | 216 | "elem %d@0x%llx:0x%x pos %u (%s)\n", __func__, |
217 | seg->mr_len, (unsigned long long)seg->mr_base, | 217 | seg->mr_len, (unsigned long long)seg->mr_base, |
218 | seg->mr_rkey, pos, n < nsegs ? "more" : "last"); | 218 | seg->mr_rkey, pos, n < nsegs ? "more" : "last"); |
219 | cur_rchunk++; | 219 | cur_rchunk++; |