diff options
-rw-r--r-- | net/sunrpc/xprtrdma/fmr_ops.c | 7 |
1 files changed, 2 insertions, 5 deletions
diff --git a/net/sunrpc/xprtrdma/fmr_ops.c b/net/sunrpc/xprtrdma/fmr_ops.c index 009694b0c56e..9d50f3a5732a 100644 --- a/net/sunrpc/xprtrdma/fmr_ops.c +++ b/net/sunrpc/xprtrdma/fmr_ops.c | |||
@@ -186,15 +186,10 @@ static void | |||
186 | __fmr_dma_unmap(struct rpcrdma_xprt *r_xprt, struct rpcrdma_mr_seg *seg) | 186 | __fmr_dma_unmap(struct rpcrdma_xprt *r_xprt, struct rpcrdma_mr_seg *seg) |
187 | { | 187 | { |
188 | struct ib_device *device = r_xprt->rx_ia.ri_device; | 188 | struct ib_device *device = r_xprt->rx_ia.ri_device; |
189 | struct rpcrdma_mw *mw = seg->rl_mw; | ||
190 | int nsegs = seg->mr_nsegs; | 189 | int nsegs = seg->mr_nsegs; |
191 | 190 | ||
192 | seg->rl_mw = NULL; | ||
193 | |||
194 | while (nsegs--) | 191 | while (nsegs--) |
195 | rpcrdma_unmap_one(device, seg++); | 192 | rpcrdma_unmap_one(device, seg++); |
196 | |||
197 | rpcrdma_put_mw(r_xprt, mw); | ||
198 | } | 193 | } |
199 | 194 | ||
200 | /* Invalidate all memory regions that were registered for "req". | 195 | /* Invalidate all memory regions that were registered for "req". |
@@ -237,9 +232,11 @@ fmr_op_unmap_sync(struct rpcrdma_xprt *r_xprt, struct rpcrdma_req *req) | |||
237 | seg = &req->rl_segments[i]; | 232 | seg = &req->rl_segments[i]; |
238 | 233 | ||
239 | __fmr_dma_unmap(r_xprt, seg); | 234 | __fmr_dma_unmap(r_xprt, seg); |
235 | rpcrdma_put_mw(r_xprt, seg->rl_mw); | ||
240 | 236 | ||
241 | i += seg->mr_nsegs; | 237 | i += seg->mr_nsegs; |
242 | seg->mr_nsegs = 0; | 238 | seg->mr_nsegs = 0; |
239 | seg->rl_mw = NULL; | ||
243 | } | 240 | } |
244 | 241 | ||
245 | req->rl_nchunks = 0; | 242 | req->rl_nchunks = 0; |