From: Sagi Grimberg Date: Sun, 1 Jan 2017 11:41:56 +0000 (+0200) Subject: nvmet: cancel fatal error and flush async work before free controller X-Git-Tag: C0P2-H0.0--20200415~6413 X-Git-Url: https://git.somdevices.com/?a=commitdiff_plain;h=3976dd677e891c0b2c63d08028d445663539472c;p=linux.git nvmet: cancel fatal error and flush async work before free controller [ Upstream commit 06406d81a2d7cfb8abcc4fa6cdfeb8e5897007c5 ] Make sure they are not running and we can free the controller safely. Signed-off-by: Roy Shterman Signed-off-by: Sagi Grimberg Reviewed-by: Christoph Hellwig Signed-off-by: Sasha Levin Signed-off-by: Greg Kroah-Hartman --- diff --git a/drivers/nvme/target/core.c b/drivers/nvme/target/core.c index 55ce769cecee..fbd6d487103f 100644 --- a/drivers/nvme/target/core.c +++ b/drivers/nvme/target/core.c @@ -816,6 +816,9 @@ static void nvmet_ctrl_free(struct kref *ref) list_del(&ctrl->subsys_entry); mutex_unlock(&subsys->lock); + flush_work(&ctrl->async_event_work); + cancel_work_sync(&ctrl->fatal_err_work); + ida_simple_remove(&subsys->cntlid_ida, ctrl->cntlid); nvmet_subsys_put(subsys);