aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorIsrael Rukshin <israelr@mellanox.com>2017-11-13 07:29:41 -0500
committerChristoph Hellwig <hch@lst.de>2018-01-08 05:01:59 -0500
commit6b1943af3f4329c814ec7a651121746d08e6c9ee (patch)
treed027ba51b04dce8b4a1520f281b611c087cc5f18
parenteca19dc1d84d924544dda0c8d2fd4bb4131affeb (diff)
nvmet: rearrange nvmet_ctrl_free()
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>
-rw-r--r--drivers/nvme/target/core.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/drivers/nvme/target/core.c b/drivers/nvme/target/core.c
index 07eb45d32a7a..7282ea8d3b96 100644
--- a/drivers/nvme/target/core.c
+++ b/drivers/nvme/target/core.c
@@ -879,21 +879,22 @@ static void nvmet_ctrl_free(struct kref *ref)
879 struct nvmet_ctrl *ctrl = container_of(ref, struct nvmet_ctrl, ref); 879 struct nvmet_ctrl *ctrl = container_of(ref, struct nvmet_ctrl, ref);
880 struct nvmet_subsys *subsys = ctrl->subsys; 880 struct nvmet_subsys *subsys = ctrl->subsys;
881 881
882 nvmet_stop_keep_alive_timer(ctrl);
883
884 mutex_lock(&subsys->lock); 882 mutex_lock(&subsys->lock);
885 list_del(&ctrl->subsys_entry); 883 list_del(&ctrl->subsys_entry);
886 mutex_unlock(&subsys->lock); 884 mutex_unlock(&subsys->lock);
887 885
886 nvmet_stop_keep_alive_timer(ctrl);
887
888 flush_work(&ctrl->async_event_work); 888 flush_work(&ctrl->async_event_work);
889 cancel_work_sync(&ctrl->fatal_err_work); 889 cancel_work_sync(&ctrl->fatal_err_work);
890 890
891 ida_simple_remove(&cntlid_ida, ctrl->cntlid); 891 ida_simple_remove(&cntlid_ida, ctrl->cntlid);
892 nvmet_subsys_put(subsys);
893 892
894 kfree(ctrl->sqs); 893 kfree(ctrl->sqs);
895 kfree(ctrl->cqs); 894 kfree(ctrl->cqs);
896 kfree(ctrl); 895 kfree(ctrl);
896
897 nvmet_subsys_put(subsys);
897} 898}
898 899
899void nvmet_ctrl_put(struct nvmet_ctrl *ctrl) 900void nvmet_ctrl_put(struct nvmet_ctrl *ctrl)