nvme-rdma: do not try to stop unallocated queues
commit 3820c4fdc247b6f0a4162733bdb8ddf8f2e8a1e4 upstream. Trying to stop a queue which hasn't been allocated will result in a warning due to calling mutex_lock() against an uninitialized mutex. DEBUG_LOCKS_WARN_ON(lock->magic != lock) WARNING: CPU: 4 PID: 104150 at kernel/locking/mutex.c:579 Call trace: RIP: 0010:__mutex_lock+0x1173/0x14a0 nvme_rdma_stop_queue+0x1b/0xa0 [nvme_rdma] nvme_rdma_teardown_io_queues.part.0+0xb0/0x1d0 [nvme_rdma] nvme_rdma_delete_ctrl+0x50/0x100 [nvme_rdma] nvme_do_delete_ctrl+0x149/0x158 [nvme_core] Signed-off-by: Maurizio Lombardi <mlombard@redhat.com> Reviewed-by: Sagi Grimberg <sagi@grimberg.me> Tested-by: Yi Zhang <yi.zhang@redhat.com> Signed-off-by: Keith Busch <kbusch@kernel.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
bec9cb90fe
commit
3519cee444
1 changed files with 3 additions and 0 deletions
|
|
@ -643,6 +643,9 @@ static void __nvme_rdma_stop_queue(struct nvme_rdma_queue *queue)
|
||||||
|
|
||||||
static void nvme_rdma_stop_queue(struct nvme_rdma_queue *queue)
|
static void nvme_rdma_stop_queue(struct nvme_rdma_queue *queue)
|
||||||
{
|
{
|
||||||
|
if (!test_bit(NVME_RDMA_Q_ALLOCATED, &queue->flags))
|
||||||
|
return;
|
||||||
|
|
||||||
mutex_lock(&queue->queue_lock);
|
mutex_lock(&queue->queue_lock);
|
||||||
if (test_and_clear_bit(NVME_RDMA_Q_LIVE, &queue->flags))
|
if (test_and_clear_bit(NVME_RDMA_Q_LIVE, &queue->flags))
|
||||||
__nvme_rdma_stop_queue(queue);
|
__nvme_rdma_stop_queue(queue);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue