diff options
| -rw-r--r-- | drivers/nvme/host/core.c | 4 | 
1 files changed, 3 insertions, 1 deletions
diff --git a/drivers/nvme/host/core.c b/drivers/nvme/host/core.c index bb39b91253c2..3cf1b773158e 100644 --- a/drivers/nvme/host/core.c +++ b/drivers/nvme/host/core.c @@ -3314,6 +3314,9 @@ void nvme_remove_namespaces(struct nvme_ctrl *ctrl)  	struct nvme_ns *ns, *next;  	LIST_HEAD(ns_list); +	/* prevent racing with ns scanning */ +	flush_work(&ctrl->scan_work); +  	/*  	 * The dead states indicates the controller was not gracefully  	 * disconnected. In that case, we won't be able to flush any data while @@ -3476,7 +3479,6 @@ void nvme_stop_ctrl(struct nvme_ctrl *ctrl)  	nvme_mpath_stop(ctrl);  	nvme_stop_keep_alive(ctrl);  	flush_work(&ctrl->async_event_work); -	flush_work(&ctrl->scan_work);  	cancel_work_sync(&ctrl->fw_act_work);  	if (ctrl->ops->stop_ctrl)  		ctrl->ops->stop_ctrl(ctrl);  | 

