|
@@ -431,6 +431,13 @@ static void pvrdma_free_qp(struct pvrdma_qp *qp)
|
|
atomic_dec(&qp->refcnt);
|
|
atomic_dec(&qp->refcnt);
|
|
wait_event(qp->wait, !atomic_read(&qp->refcnt));
|
|
wait_event(qp->wait, !atomic_read(&qp->refcnt));
|
|
|
|
|
|
|
|
+ if (!qp->is_kernel) {
|
|
|
|
+ if (qp->rumem)
|
|
|
|
+ ib_umem_release(qp->rumem);
|
|
|
|
+ if (qp->sumem)
|
|
|
|
+ ib_umem_release(qp->sumem);
|
|
|
|
+ }
|
|
|
|
+
|
|
pvrdma_page_dir_cleanup(dev, &qp->pdir);
|
|
pvrdma_page_dir_cleanup(dev, &qp->pdir);
|
|
|
|
|
|
kfree(qp);
|
|
kfree(qp);
|