IB/rxe: Fix reference leaks in memory key invalidation code
authorBart Van Assche <bart.vanassche@sandisk.com>
Tue, 10 Jan 2017 19:15:52 +0000 (11:15 -0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 15 Nov 2017 14:53:16 +0000 (15:53 +0100)
[ Upstream commit ab17654476a11a1ed7d89f1104e2acdb7ed1c9ed ]

Signed-off-by: Bart Van Assche <bart.vanassche@sandisk.com>
Reviewed-by: Leon Romanovsky <leonro@mellanox.com>
Reviewed-by: Andrew Boyer <andrew.boyer@dell.com>
Cc: Moni Shoua <monis@mellanox.com>
Signed-off-by: Doug Ledford <dledford@redhat.com>
Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/infiniband/sw/rxe/rxe_req.c
drivers/infiniband/sw/rxe/rxe_resp.c

index 9f46be5..9d08478 100644 (file)
@@ -633,6 +633,7 @@ next_wqe:
                                goto exit;
                        }
                        rmr->state = RXE_MEM_STATE_FREE;
+                       rxe_drop_ref(rmr);
                        wqe->state = wqe_state_done;
                        wqe->status = IB_WC_SUCCESS;
                } else if (wqe->wr.opcode == IB_WR_REG_MR) {
index 69ed4e0..7705820 100644 (file)
@@ -893,6 +893,7 @@ static enum resp_states do_complete(struct rxe_qp *qp,
                                        return RESPST_ERROR;
                                }
                                rmr->state = RXE_MEM_STATE_FREE;
+                               rxe_drop_ref(rmr);
                        }
 
                        wc->qp                  = &qp->ibqp;