NVMe: Memory barrier before queue_count is incremented
Protects against reordering and/or preempting which would allow the kthread to access the queue descriptor before it is set up Signed-off-by: Jon Derrick <jonathan.derrick@intel.com> Acked-by: Keith Busch <keith.busch@intel.com> Signed-off-by: Jens Axboe <axboe@fb.com>
This commit is contained in:
parent
4cc06521ee
commit
36a7e993ee
|
@ -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:
|
||||
|
|
Loading…
Reference in New Issue