lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Tue, 20 Jul 2021 14:43:52 +0200 From: Daniel Wagner <dwagner@...e.de> To: linux-nvme@...ts.infradead.org Cc: linux-kernel@...r.kernel.org, James Smart <james.smart@...adcom.com>, Keith Busch <kbusch@...nel.org>, Ming Lei <ming.lei@...hat.com>, Sagi Grimberg <sagi@...mberg.me>, James Smart <jsmart2021@...il.com>, Chao Leng <lengchao@...wei.com>, Daniel Wagner <dwagner@...e.de> Subject: [PATCH v3 5/6] nvme-fc: avoid race between time out and tear down From: James Smart <jsmart2021@...il.com> To avoid race between time out and tear down, in tear down process, first we quiesce the queue, and then delete the timer and cancel the time out work for the queue. This patch merges the admin and io sync ops into the queue teardown logic as shown in the RDMA patch 3017013dcc "nvme-rdma: avoid race between time out and tear down". There is no teardown_lock in nvme-fc. Signed-off-by: James Smart <jsmart2021@...il.com> CC: Chao Leng <lengchao@...wei.com> Tested-by: Daniel Wagner <dwagner@...e.de> [dwagner: updated commit id referenced in commit message] Reviewed-by: Daniel Wagner <dwagner@...e.de> --- drivers/nvme/host/fc.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/drivers/nvme/host/fc.c b/drivers/nvme/host/fc.c index a64be4fb07af..112e62cd8a2a 100644 --- a/drivers/nvme/host/fc.c +++ b/drivers/nvme/host/fc.c @@ -2487,6 +2487,7 @@ __nvme_fc_abort_outstanding_ios(struct nvme_fc_ctrl *ctrl, bool start_queues) */ if (ctrl->ctrl.queue_count > 1) { nvme_stop_queues(&ctrl->ctrl); + nvme_sync_io_queues(&ctrl->ctrl); blk_mq_tagset_busy_iter(&ctrl->tag_set, nvme_fc_terminate_exchange, &ctrl->ctrl); blk_mq_tagset_wait_completed_request(&ctrl->tag_set); @@ -2510,6 +2511,7 @@ __nvme_fc_abort_outstanding_ios(struct nvme_fc_ctrl *ctrl, bool start_queues) * clean up the admin queue. Same thing as above. */ blk_mq_quiesce_queue(ctrl->ctrl.admin_q); + blk_sync_queue(ctrl->ctrl.admin_q); blk_mq_tagset_busy_iter(&ctrl->admin_tag_set, nvme_fc_terminate_exchange, &ctrl->ctrl); blk_mq_tagset_wait_completed_request(&ctrl->admin_tag_set); -- 2.29.2
Powered by blists - more mailing lists