diff options
| author | Prashant Kamble <[email protected]> | 2026-05-24 21:17:14 +0530 |
|---|---|---|
| committer | Neil Armstrong <[email protected]> | 2026-05-28 12:56:23 +0200 |
| commit | 61280341e926aee1787d9aedb358a43fad96e787 (patch) | |
| tree | 3a539bf29bf6fc3c2f293a8f65f83e619d78a1bc | |
| parent | 29c40bb2a13ed1c294497044e2299cc0a511ce32 (diff) | |
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 <[email protected]>
Reviewed-by: Neil Armstrong <[email protected]>
Link: https://patch.msgid.link/[email protected]
Signed-off-by: Neil Armstrong <[email protected]>
| -rw-r--r-- | drivers/nvme/nvme.c | 12 |
1 files changed, 3 insertions, 9 deletions
diff --git a/drivers/nvme/nvme.c b/drivers/nvme/nvme.c index da7dad9f52b..30eba0bf7c7 100644 --- a/drivers/nvme/nvme.c +++ b/drivers/nvme/nvme.c @@ -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; } |
