[azure:x/azure-edge:x][PATCH 5/6] UBUNTU: SAUCE: vmbus-rdma: ND144: remove idr handle before calling ND on freeing CQ and QP
Marcelo Henrique Cerri
marcelo.cerri at canonical.com
Wed Feb 14 15:58:16 UTC 2018
From: Long Li <longli at microsoft.com>
BugLink: http://bugs.launchpad.net/bugs/1749332
Signed-off-by: Long Li <longli at microsoft.com>
Signed-off-by: Marcelo Henrique Cerri <marcelo.cerri at canonical.com>
---
.../hw/vmbus-rdma/vmbus-rdma-144.0/vmbus_rdma.c | 24 +++++-----------------
1 file changed, 5 insertions(+), 19 deletions(-)
diff --git a/drivers/infiniband/hw/vmbus-rdma/vmbus-rdma-144.0/vmbus_rdma.c b/drivers/infiniband/hw/vmbus-rdma/vmbus-rdma-144.0/vmbus_rdma.c
index daf68dcccb1b..58f2484fb819 100644
--- a/drivers/infiniband/hw/vmbus-rdma/vmbus-rdma-144.0/vmbus_rdma.c
+++ b/drivers/infiniband/hw/vmbus-rdma/vmbus-rdma-144.0/vmbus_rdma.c
@@ -1023,9 +1023,9 @@ int hvnd_create_cq(struct hvnd_dev *nd_dev, struct hvnd_ucontext *uctx,
int hvnd_destroy_cq(struct hvnd_dev *nd_dev, struct hvnd_cq *cq)
{
struct pkt_nd_free_cq free_cq_pkt;
- int ret;
- // KYS try to avoid having to zero everything
+ remove_handle(nd_dev, &nd_dev->cqidr, cq->cqn);
+
memset(&free_cq_pkt, 0, sizeof(free_cq_pkt));
hvnd_init_hdr(&free_cq_pkt.hdr,
sizeof(struct pkt_nd_free_cq) -
@@ -1040,19 +1040,9 @@ int hvnd_destroy_cq(struct hvnd_dev *nd_dev, struct hvnd_cq *cq)
free_cq_pkt.ioctl.in.version = ND_VERSION_1;
free_cq_pkt.ioctl.in.handle = cq->cq_handle;
- ret = hvnd_send_ioctl_pkt(nd_dev, &free_cq_pkt.hdr,
+ return hvnd_send_ioctl_pkt(nd_dev, &free_cq_pkt.hdr,
sizeof(struct pkt_nd_free_cq),
(u64)&free_cq_pkt);
-
- if (ret)
- goto free_cq_err;
-
- remove_handle(nd_dev, &nd_dev->cqidr, cq->cqn);
-
- return 0;
-
-free_cq_err:
- return ret;
}
@@ -2291,12 +2281,8 @@ int hvnd_create_qp(struct hvnd_dev *nd_dev, struct hvnd_ucontext *uctx,
int hvnd_free_qp(struct hvnd_dev *nd_dev, struct hvnd_ucontext *uctx,
struct hvnd_qp *qp)
{
- int ret;
-
- ret = hvnd_free_handle(nd_dev, uctx, qp->qp_handle, IOCTL_ND_QP_FREE);
- if (ret == 0)
- remove_handle(nd_dev, &nd_dev->qpidr, qp->qpn);
- return ret;
+ remove_handle(nd_dev, &nd_dev->qpidr, qp->qpn);
+ return hvnd_free_handle(nd_dev, uctx, qp->qp_handle, IOCTL_ND_QP_FREE);
}
int hvnd_flush_qp(struct hvnd_dev *nd_dev, struct hvnd_ucontext *uctx,
--
2.7.4
More information about the kernel-team
mailing list