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 9f46be52335e7a81ed7a365f07f3105cb59bcd77..9d084780ac91faa41b464241c543dca2361c3429 100644 (file)
@@ -633,6 +633,7 @@ int rxe_requester(void *arg)
                                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 69ed4e0d7a0df3af3a0c15ebb421729336927eaf..7705820cdac61a73b8a16406e7811c3865c5e649 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;