nvmet: rearrange nvmet_ctrl_free()
authorIsrael Rukshin <israelr@mellanox.com>
Mon, 13 Nov 2017 12:29:41 +0000 (12:29 +0000)
committerChristoph Hellwig <hch@lst.de>
Mon, 8 Jan 2018 10:01:59 +0000 (11:01 +0100)
Make it symmetric to nvmet_alloc_ctrl().

Signed-off-by: Israel Rukshin <israelr@mellanox.com>
Reviewed-by: Max Gurtovoy <maxg@mellanox.com>
Signed-off-by: Christoph Hellwig <hch@lst.de>
drivers/nvme/target/core.c

index 07eb45d..7282ea8 100644 (file)
@@ -879,21 +879,22 @@ static void nvmet_ctrl_free(struct kref *ref)
        struct nvmet_ctrl *ctrl = container_of(ref, struct nvmet_ctrl, ref);
        struct nvmet_subsys *subsys = ctrl->subsys;
 
-       nvmet_stop_keep_alive_timer(ctrl);
-
        mutex_lock(&subsys->lock);
        list_del(&ctrl->subsys_entry);
        mutex_unlock(&subsys->lock);
 
+       nvmet_stop_keep_alive_timer(ctrl);
+
        flush_work(&ctrl->async_event_work);
        cancel_work_sync(&ctrl->fatal_err_work);
 
        ida_simple_remove(&cntlid_ida, ctrl->cntlid);
-       nvmet_subsys_put(subsys);
 
        kfree(ctrl->sqs);
        kfree(ctrl->cqs);
        kfree(ctrl);
+
+       nvmet_subsys_put(subsys);
 }
 
 void nvmet_ctrl_put(struct nvmet_ctrl *ctrl)