mirror of
https://github.com/torvalds/linux.git
synced 2026-03-08 03:24:45 +01:00
nvme-pci: ensure we're polling a polled queue
A user can change the polled queue count at run time. There's a brief window during a reset where a hipri task may try to poll that queue before the block layer has updated the queue maps, which would race with the now interrupt driven queue and may cause double completions. Reviewed-by: Christoph Hellwig <hch@lst.de> Reviewed-by: Kanchan Joshi <joshi.k@samsung.com> Signed-off-by: Keith Busch <kbusch@kernel.org>
This commit is contained in:
parent
bbdaa8c17c
commit
166e31d7db
1 changed files with 2 additions and 1 deletions
|
|
@ -1627,7 +1627,8 @@ static int nvme_poll(struct blk_mq_hw_ctx *hctx, struct io_comp_batch *iob)
|
|||
struct nvme_queue *nvmeq = hctx->driver_data;
|
||||
bool found;
|
||||
|
||||
if (!nvme_cqe_pending(nvmeq))
|
||||
if (!test_bit(NVMEQ_POLLED, &nvmeq->flags) ||
|
||||
!nvme_cqe_pending(nvmeq))
|
||||
return 0;
|
||||
|
||||
spin_lock(&nvmeq->cq_poll_lock);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue