|
@@ -1452,7 +1452,7 @@ static int nvme_create_queue(struct nvme_queue *nvmeq, int qid)
|
|
|
nvmeq->cq_vector = qid - 1;
|
|
|
result = adapter_alloc_cq(dev, qid, nvmeq);
|
|
|
if (result < 0)
|
|
|
- return result;
|
|
|
+ goto release_vector;
|
|
|
|
|
|
result = adapter_alloc_sq(dev, qid, nvmeq);
|
|
|
if (result < 0)
|
|
@@ -1466,9 +1466,12 @@ static int nvme_create_queue(struct nvme_queue *nvmeq, int qid)
|
|
|
return result;
|
|
|
|
|
|
release_sq:
|
|
|
+ dev->online_queues--;
|
|
|
adapter_delete_sq(dev, qid);
|
|
|
release_cq:
|
|
|
adapter_delete_cq(dev, qid);
|
|
|
+ release_vector:
|
|
|
+ nvmeq->cq_vector = -1;
|
|
|
return result;
|
|
|
}
|
|
|
|