diff --git a/drivers/block/nvme-core.c b/drivers/block/nvme-core.c index 9682e29b41714..cae7cac6cc439 100644 --- a/drivers/block/nvme-core.c +++ b/drivers/block/nvme-core.c @@ -1453,9 +1453,12 @@ static struct nvme_queue *nvme_alloc_queue(struct nvme_dev *dev, int qid, nvmeq->q_db = &dev->dbs[qid * 2 * dev->db_stride]; nvmeq->q_depth = depth; nvmeq->qid = qid; - dev->queue_count++; dev->queues[qid] = nvmeq; + /* make sure queue descriptor is set before queue count, for kthread */ + mb(); + dev->queue_count++; + return nvmeq; free_cqdma: