]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/blame - releases/4.9.68/nvmet-cancel-fatal-error-and-flush-async-work-before-free-controller.patch
4.9-stable patches
[thirdparty/kernel/stable-queue.git] / releases / 4.9.68 / nvmet-cancel-fatal-error-and-flush-async-work-before-free-controller.patch
CommitLineData
95244f99
GKH
1From foo@baz Wed Dec 6 17:39:55 CET 2017
2From: Sagi Grimberg <sagi@grimberg.me>
3Date: Sun, 1 Jan 2017 13:41:56 +0200
4Subject: nvmet: cancel fatal error and flush async work before free controller
5
6From: Sagi Grimberg <sagi@grimberg.me>
7
8
9[ Upstream commit 06406d81a2d7cfb8abcc4fa6cdfeb8e5897007c5 ]
10
11Make sure they are not running and we can free the controller
12safely.
13
14Signed-off-by: Roy Shterman <roys@lightbitslabs.com>
15Signed-off-by: Sagi Grimberg <sagi@grimberg.me>
16Reviewed-by: Christoph Hellwig <hch@lst.de>
17Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
18Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
19---
20 drivers/nvme/target/core.c | 3 +++
21 1 file changed, 3 insertions(+)
22
23--- a/drivers/nvme/target/core.c
24+++ b/drivers/nvme/target/core.c
25@@ -816,6 +816,9 @@ static void nvmet_ctrl_free(struct kref
26 list_del(&ctrl->subsys_entry);
27 mutex_unlock(&subsys->lock);
28
29+ flush_work(&ctrl->async_event_work);
30+ cancel_work_sync(&ctrl->fatal_err_work);
31+
32 ida_simple_remove(&subsys->cntlid_ida, ctrl->cntlid);
33 nvmet_subsys_put(subsys);
34