aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSagi Grimberg <sagi@grimberg.me>2016-09-22 21:58:17 -0400
committerJens Axboe <axboe@fb.com>2016-09-22 21:58:17 -0400
commit3b4ac78610690bd83fb33762ef97e8b8a89285ae (patch)
tree5b0c18a8f3a68bc4223b080460a8b2e600a40cc8
parent164c80ed84a7669114869d9347c0f3ea7f56ea89 (diff)
nvme-rdma: only clear queue flags after successful connect
Otherwise, nvme_rdma_stop_and_clear_queue() will incorrectly try to stop/free rdma qps/cm_ids that are already freed. Fixes: e89ca58f9c90 ("nvme-rdma: add DELETING queue flag") Reported-by: Steve Wise <swise@opengridcomputing.com> Tested-by: Steve Wise <swise@opengridcomputing.com> Signed-off-by: Sagi Grimberg <sagi@grimberg.me> Reviewed-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Jens Axboe <axboe@fb.com>
-rw-r--r--drivers/nvme/host/rdma.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/nvme/host/rdma.c b/drivers/nvme/host/rdma.c
index c2c2c28e6eb5..fbdb2267e460 100644
--- a/drivers/nvme/host/rdma.c
+++ b/drivers/nvme/host/rdma.c
@@ -561,7 +561,6 @@ static int nvme_rdma_init_queue(struct nvme_rdma_ctrl *ctrl,
561 561
562 queue = &ctrl->queues[idx]; 562 queue = &ctrl->queues[idx];
563 queue->ctrl = ctrl; 563 queue->ctrl = ctrl;
564 queue->flags = 0;
565 init_completion(&queue->cm_done); 564 init_completion(&queue->cm_done);
566 565
567 if (idx > 0) 566 if (idx > 0)
@@ -595,6 +594,7 @@ static int nvme_rdma_init_queue(struct nvme_rdma_ctrl *ctrl,
595 goto out_destroy_cm_id; 594 goto out_destroy_cm_id;
596 } 595 }
597 596
597 clear_bit(NVME_RDMA_Q_DELETING, &queue->flags);
598 set_bit(NVME_RDMA_Q_CONNECTED, &queue->flags); 598 set_bit(NVME_RDMA_Q_CONNECTED, &queue->flags);
599 599
600 return 0; 600 return 0;