summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--net/sunrpc/xprtrdma/frwr_ops.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/net/sunrpc/xprtrdma/frwr_ops.c b/net/sunrpc/xprtrdma/frwr_ops.c
index e16567389e28..ecb005f871f1 100644
--- a/net/sunrpc/xprtrdma/frwr_ops.c
+++ b/net/sunrpc/xprtrdma/frwr_ops.c
@@ -520,14 +520,18 @@ frwr_op_unmap_sync(struct rpcrdma_xprt *r_xprt, struct rpcrdma_req *req)
520 * unless ri_id->qp is a valid pointer. 520 * unless ri_id->qp is a valid pointer.
521 */ 521 */
522 rc = ib_post_send(ia->ri_id->qp, invalidate_wrs, &bad_wr); 522 rc = ib_post_send(ia->ri_id->qp, invalidate_wrs, &bad_wr);
523 if (rc) 523 if (rc) {
524 pr_warn("%s: ib_post_send failed %i\n", __func__, rc); 524 pr_warn("%s: ib_post_send failed %i\n", __func__, rc);
525 rdma_disconnect(ia->ri_id);
526 goto unmap;
527 }
525 528
526 wait_for_completion(&f->fr_linv_done); 529 wait_for_completion(&f->fr_linv_done);
527 530
528 /* ORDER: Now DMA unmap all of the req's MRs, and return 531 /* ORDER: Now DMA unmap all of the req's MRs, and return
529 * them to the free MW list. 532 * them to the free MW list.
530 */ 533 */
534unmap:
531 for (i = 0, nchunks = req->rl_nchunks; nchunks; nchunks--) { 535 for (i = 0, nchunks = req->rl_nchunks; nchunks; nchunks--) {
532 seg = &req->rl_segments[i]; 536 seg = &req->rl_segments[i];
533 537