lkml.org 
[lkml]   [2023]   [Oct]   [29]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH AUTOSEL 5.15 12/28] nvme-rdma: do not try to stop unallocated queues
    Date
    From: Maurizio Lombardi <mlombard@redhat.com>

    [ Upstream commit 3820c4fdc247b6f0a4162733bdb8ddf8f2e8a1e4 ]

    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: Sasha Levin <sashal@kernel.org>
    ---
    drivers/nvme/host/rdma.c | 3 +++
    1 file changed, 3 insertions(+)

    diff --git a/drivers/nvme/host/rdma.c b/drivers/nvme/host/rdma.c
    index b76e1d4adcc77..6e92bdf459fe4 100644
    --- a/drivers/nvme/host/rdma.c
    +++ b/drivers/nvme/host/rdma.c
    @@ -645,6 +645,9 @@ 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);
    if (test_and_clear_bit(NVME_RDMA_Q_LIVE, &queue->flags))
    __nvme_rdma_stop_queue(queue);
    --
    2.42.0
    \
     
     \ /
      Last update: 2023-10-30 00:31    [W:4.369 / U:0.000 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site