diff options
author | Bryan Tan <bryantan@vmware.com> | 2017-12-20 12:49:03 -0500 |
---|---|---|
committer | Jason Gunthorpe <jgg@mellanox.com> | 2017-12-21 18:06:06 -0500 |
commit | 17748056ce123ee37fb7382bc698fc721e3c4a09 (patch) | |
tree | 9096a58055eb7db22c7bf370d9a79f767c8c973c | |
parent | d14587334580bc94d3ee11e8320e0c157f91ae8f (diff) |
RDMA/vmw_pvrdma: Call ib_umem_release on destroy QP path
The QP cleanup did not previously call ib_umem_release,
resulting in a user-triggerable kernel resource leak.
Fixes: 29c8d9eba550 ("IB: Add vmw_pvrdma driver")
Reviewed-by: Adit Ranadive <aditr@vmware.com>
Reviewed-by: Aditya Sarwade <asarwade@vmware.com>
Reviewed-by: Jorgen Hansen <jhansen@vmware.com>
Signed-off-by: Bryan Tan <bryantan@vmware.com>
Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
-rw-r--r-- | drivers/infiniband/hw/vmw_pvrdma/pvrdma_qp.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/drivers/infiniband/hw/vmw_pvrdma/pvrdma_qp.c b/drivers/infiniband/hw/vmw_pvrdma/pvrdma_qp.c index 10420a18d02f..dceebc623d96 100644 --- a/drivers/infiniband/hw/vmw_pvrdma/pvrdma_qp.c +++ b/drivers/infiniband/hw/vmw_pvrdma/pvrdma_qp.c | |||
@@ -431,6 +431,13 @@ static void pvrdma_free_qp(struct pvrdma_qp *qp) | |||
431 | atomic_dec(&qp->refcnt); | 431 | atomic_dec(&qp->refcnt); |
432 | wait_event(qp->wait, !atomic_read(&qp->refcnt)); | 432 | wait_event(qp->wait, !atomic_read(&qp->refcnt)); |
433 | 433 | ||
434 | if (!qp->is_kernel) { | ||
435 | if (qp->rumem) | ||
436 | ib_umem_release(qp->rumem); | ||
437 | if (qp->sumem) | ||
438 | ib_umem_release(qp->sumem); | ||
439 | } | ||
440 | |||
434 | pvrdma_page_dir_cleanup(dev, &qp->pdir); | 441 | pvrdma_page_dir_cleanup(dev, &qp->pdir); |
435 | 442 | ||
436 | kfree(qp); | 443 | kfree(qp); |