nvme: avoid deleting uncreated queues
nvme_create_queue() may issue Delete CQ or Delete SQ commands even when the corresponding queue creation failed. Avoid sending delete commands for queues that were never successfully created. Signed-off-by: Prashant Kamble <prashant.kamble223@gmail.com> Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org> Link: https://patch.msgid.link/20260524154718.16381-1-prashant.kamble223@gmail.com Signed-off-by: Neil Armstrong <neil.armstrong@linaro.org>
This commit is contained in:
committed by
Neil Armstrong
parent
29c40bb2a1
commit
61280341e9
+3
-9
@@ -298,11 +298,6 @@ static int nvme_delete_queue(struct nvme_dev *dev, u8 opcode, u16 id)
|
||||
return nvme_submit_admin_cmd(dev, &c, NULL);
|
||||
}
|
||||
|
||||
static int nvme_delete_sq(struct nvme_dev *dev, u16 sqid)
|
||||
{
|
||||
return nvme_delete_queue(dev, nvme_admin_delete_sq, sqid);
|
||||
}
|
||||
|
||||
static int nvme_delete_cq(struct nvme_dev *dev, u16 cqid)
|
||||
{
|
||||
return nvme_delete_queue(dev, nvme_admin_delete_cq, cqid);
|
||||
@@ -563,20 +558,19 @@ static int nvme_create_queue(struct nvme_queue *nvmeq, int qid)
|
||||
nvmeq->cq_vector = qid - 1;
|
||||
result = nvme_alloc_cq(dev, qid, nvmeq);
|
||||
if (result < 0)
|
||||
goto release_cq;
|
||||
goto release_ret;
|
||||
|
||||
result = nvme_alloc_sq(dev, qid, nvmeq);
|
||||
if (result < 0)
|
||||
goto release_sq;
|
||||
goto release_cq;
|
||||
|
||||
nvme_init_queue(nvmeq, qid);
|
||||
|
||||
return result;
|
||||
|
||||
release_sq:
|
||||
nvme_delete_sq(dev, qid);
|
||||
release_cq:
|
||||
nvme_delete_cq(dev, qid);
|
||||
release_ret:
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user