diff options
Diffstat (limited to 'drivers/nvme/host/rdma.c')
-rw-r--r-- | drivers/nvme/host/rdma.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/drivers/nvme/host/rdma.c b/drivers/nvme/host/rdma.c index 92a03ff5fb4d..4dbee893a047 100644 --- a/drivers/nvme/host/rdma.c +++ b/drivers/nvme/host/rdma.c | |||
@@ -571,6 +571,12 @@ static void nvme_rdma_free_queue(struct nvme_rdma_queue *queue) | |||
571 | if (test_and_set_bit(NVME_RDMA_Q_DELETING, &queue->flags)) | 571 | if (test_and_set_bit(NVME_RDMA_Q_DELETING, &queue->flags)) |
572 | return; | 572 | return; |
573 | 573 | ||
574 | if (nvme_rdma_queue_idx(queue) == 0) { | ||
575 | nvme_rdma_free_qe(queue->device->dev, | ||
576 | &queue->ctrl->async_event_sqe, | ||
577 | sizeof(struct nvme_command), DMA_TO_DEVICE); | ||
578 | } | ||
579 | |||
574 | nvme_rdma_destroy_queue_ib(queue); | 580 | nvme_rdma_destroy_queue_ib(queue); |
575 | rdma_destroy_id(queue->cm_id); | 581 | rdma_destroy_id(queue->cm_id); |
576 | } | 582 | } |
@@ -739,8 +745,6 @@ out: | |||
739 | static void nvme_rdma_destroy_admin_queue(struct nvme_rdma_ctrl *ctrl, | 745 | static void nvme_rdma_destroy_admin_queue(struct nvme_rdma_ctrl *ctrl, |
740 | bool remove) | 746 | bool remove) |
741 | { | 747 | { |
742 | nvme_rdma_free_qe(ctrl->queues[0].device->dev, &ctrl->async_event_sqe, | ||
743 | sizeof(struct nvme_command), DMA_TO_DEVICE); | ||
744 | nvme_rdma_stop_queue(&ctrl->queues[0]); | 748 | nvme_rdma_stop_queue(&ctrl->queues[0]); |
745 | if (remove) { | 749 | if (remove) { |
746 | blk_cleanup_queue(ctrl->ctrl.admin_q); | 750 | blk_cleanup_queue(ctrl->ctrl.admin_q); |