lkml.org 
[lkml]   [2021]   [Jun]   [16]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.12 37/48] nvme-loop: check for NVME_LOOP_Q_LIVE in nvme_loop_destroy_admin_queue()
    Date
    From: Hannes Reinecke <hare@suse.de>

    [ Upstream commit 4237de2f73a669e4f89ac0aa2b44fb1a1d9ec583 ]

    We need to check the NVME_LOOP_Q_LIVE flag in
    nvme_loop_destroy_admin_queue() to protect against duplicate
    invocations eg during concurrent reset and remove calls.

    Signed-off-by: Hannes Reinecke <hare@suse.de>
    Reviewed-by: Chaitanya Kulkarni <chaitanya.kulkarni@wdc.com>
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    drivers/nvme/target/loop.c | 3 ++-
    1 file changed, 2 insertions(+), 1 deletion(-)

    diff --git a/drivers/nvme/target/loop.c b/drivers/nvme/target/loop.c
    index c34f785e699d..fe14609d2254 100644
    --- a/drivers/nvme/target/loop.c
    +++ b/drivers/nvme/target/loop.c
    @@ -261,7 +261,8 @@ static const struct blk_mq_ops nvme_loop_admin_mq_ops = {

    static void nvme_loop_destroy_admin_queue(struct nvme_loop_ctrl *ctrl)
    {
    - clear_bit(NVME_LOOP_Q_LIVE, &ctrl->queues[0].flags);
    + if (!test_and_clear_bit(NVME_LOOP_Q_LIVE, &ctrl->queues[0].flags))
    + return;
    nvmet_sq_destroy(&ctrl->queues[0].nvme_sq);
    blk_cleanup_queue(ctrl->ctrl.admin_q);
    blk_cleanup_queue(ctrl->ctrl.fabrics_q);
    --
    2.30.2


    \
     
     \ /
      Last update: 2021-06-16 17:44    [W:4.037 / U:0.044 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site