forked from Minki/linux
nvme-rdma: cancel async events before freeing event struct
Cancel async event work in case async event has been queued up, and nvme_rdma_submit_async_event() runs after event has been freed. Signed-off-by: David Milburn <dmilburn@redhat.com> Reviewed-by: Keith Busch <kbusch@kernel.org> Reviewed-by: Sagi Grimberg <sagi@grimberg.me> Signed-off-by: Christoph Hellwig <hch@lst.de>
This commit is contained in:
parent
e126e8210e
commit
925dd04c1f
@ -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);
|
blk_mq_free_tag_set(ctrl->ctrl.admin_tagset);
|
||||||
}
|
}
|
||||||
if (ctrl->async_event_sqe.data) {
|
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,
|
nvme_rdma_free_qe(ctrl->device->dev, &ctrl->async_event_sqe,
|
||||||
sizeof(struct nvme_command), DMA_TO_DEVICE);
|
sizeof(struct nvme_command), DMA_TO_DEVICE);
|
||||||
ctrl->async_event_sqe.data = NULL;
|
ctrl->async_event_sqe.data = NULL;
|
||||||
|
Loading…
Reference in New Issue
Block a user