]> git.baikalelectronics.ru Git - kernel.git/commit
nvme-pci: Hold cq_poll_lock while completing CQEs
authorBijan Mottahedeh <bijan.mottahedeh@oracle.com>
Thu, 27 Feb 2020 02:53:43 +0000 (18:53 -0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 5 Mar 2020 15:43:46 +0000 (16:43 +0100)
commit63a0eef79140ae4f473f94ebc574df4194a91ed9
tree7d720c2a18ec1a172ee187b76888200990ecc19c
parent3cface79ef3a0c51ad398b907782f485efae9c70
nvme-pci: Hold cq_poll_lock while completing CQEs

commit bb8f0daaad628e6479a24651de6c9a99ac6103c4 upstream.

Completions need to consumed in the same order the controller submitted
them, otherwise future completion entries may overwrite ones we haven't
handled yet. Hold the nvme queue's poll lock while completing new CQEs to
prevent another thread from freeing command tags for reuse out-of-order.

Fixes: 023960f4c905 ("nvme: provide optimized poll function for separate poll queues")
Signed-off-by: Bijan Mottahedeh <bijan.mottahedeh@oracle.com>
Reviewed-by: Sagi Grimberg <sagi@grimberg.me>
Reviewed-by: Jens Axboe <axboe@kernel.dk>
Signed-off-by: Keith Busch <kbusch@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/nvme/host/pci.c