Linux-NVME Archive on lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2] nvme: cancel async events before freeing event struct
@ 2020-09-02 19:46 David Milburn
  2020-09-02 22:02 ` Sagi Grimberg
  0 siblings, 1 reply; 3+ messages in thread
From: David Milburn @ 2020-09-02 19:46 UTC (permalink / raw)
  To: linux-nvme, sagi, hch, james.smart

Cancel async event work in case async event has been queued
up, and transport trys to submit event after it has been freed.

Signed-off-by: David Milburn <dmilburn@redhat.com>
---
 drivers/nvme/host/fc.c   | 1 +
 drivers/nvme/host/rdma.c | 1 +
 drivers/nvme/host/tcp.c  | 1 +
 3 files changed, 3 insertions(+)

diff --git a/drivers/nvme/host/fc.c b/drivers/nvme/host/fc.c
index a7f474ddfff7..e8ef42b9d50c 100644
--- a/drivers/nvme/host/fc.c
+++ b/drivers/nvme/host/fc.c
@@ -2160,6 +2160,7 @@ nvme_fc_term_aen_ops(struct nvme_fc_ctrl *ctrl)
 	struct nvme_fc_fcp_op *aen_op;
 	int i;
 
+	cancel_work_sync(&ctrl->ctrl.async_event_work);
 	aen_op = ctrl->aen_ops;
 	for (i = 0; i < NVME_NR_AEN_COMMANDS; i++, aen_op++) {
 		__nvme_fc_exit_request(ctrl, aen_op);
diff --git a/drivers/nvme/host/rdma.c b/drivers/nvme/host/rdma.c
index 8e5ffe2f117d..9e378d0a0c01 100644
--- a/drivers/nvme/host/rdma.c
+++ b/drivers/nvme/host/rdma.c
@@ -835,6 +835,7 @@ static void nvme_rdma_destroy_admin_queue(struct nvme_rdma_ctrl *ctrl,
 		blk_mq_free_tag_set(ctrl->ctrl.admin_tagset);
 	}
 	if (ctrl->async_event_sqe.data) {
+		cancel_work_sync(&ctrl->ctrl.async_event_work);
 		nvme_rdma_free_qe(ctrl->device->dev, &ctrl->async_event_sqe,
 				sizeof(struct nvme_command), DMA_TO_DEVICE);
 		ctrl->async_event_sqe.data = NULL;
diff --git a/drivers/nvme/host/tcp.c b/drivers/nvme/host/tcp.c
index 16851ae3bddf..8f4f29f18b8c 100644
--- a/drivers/nvme/host/tcp.c
+++ b/drivers/nvme/host/tcp.c
@@ -1596,6 +1596,7 @@ static struct blk_mq_tag_set *nvme_tcp_alloc_tagset(struct nvme_ctrl *nctrl,
 static void nvme_tcp_free_admin_queue(struct nvme_ctrl *ctrl)
 {
 	if (to_tcp_ctrl(ctrl)->async_req.pdu) {
+		cancel_work_sync(&ctrl->async_event_work);
 		nvme_tcp_free_async_req(to_tcp_ctrl(ctrl));
 		to_tcp_ctrl(ctrl)->async_req.pdu = NULL;
 	}
-- 
2.18.1


_______________________________________________
Linux-nvme mailing list
Linux-nvme@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-nvme

^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [PATCH v2] nvme: cancel async events before freeing event struct
  2020-09-02 19:46 [PATCH v2] nvme: cancel async events before freeing event struct David Milburn
@ 2020-09-02 22:02 ` Sagi Grimberg
  2020-09-02 22:49   ` David Milburn
  0 siblings, 1 reply; 3+ messages in thread
From: Sagi Grimberg @ 2020-09-02 22:02 UTC (permalink / raw)
  To: David Milburn, linux-nvme, hch, james.smart


> Cancel async event work in case async event has been queued
> up, and transport trys to submit event after it has been freed.

Can you split to 3 patches please?

_______________________________________________
Linux-nvme mailing list
Linux-nvme@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-nvme

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH v2] nvme: cancel async events before freeing event struct
  2020-09-02 22:02 ` Sagi Grimberg
@ 2020-09-02 22:49   ` David Milburn
  0 siblings, 0 replies; 3+ messages in thread
From: David Milburn @ 2020-09-02 22:49 UTC (permalink / raw)
  To: Sagi Grimberg, linux-nvme, hch, james.smart

Hi Sagi,

On 09/02/2020 05:02 PM, Sagi Grimberg wrote:
> 
>> Cancel async event work in case async event has been queued
>> up, and transport trys to submit event after it has been freed.
> 
> Can you split to 3 patches please?
> 

OK, re-submitted.

Thanks,
David


_______________________________________________
Linux-nvme mailing list
Linux-nvme@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-nvme

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2020-09-02 22:50 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2020-09-02 19:46 [PATCH v2] nvme: cancel async events before freeing event struct David Milburn
2020-09-02 22:02 ` Sagi Grimberg
2020-09-02 22:49   ` David Milburn

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox