nvme-rdma: fix a segmentation fault during module unload
In case there are controllers that are not associated with any RDMA
device (e.g. during unsuccessful reconnection) and the user will unload
the module, these controllers will not be freed and will access already
freed memory. The same logic appears in other fabric drivers as well.
Fixes: 87fd125344
("nvme-rdma: remove redundant reference between ib_device and tagset")
Reviewed-by: Sagi Grimberg <sagi@grimberg.me>
Signed-off-by: Max Gurtovoy <maxg@mellanox.com>
Signed-off-by: Keith Busch <kbusch@kernel.org>
This commit is contained in:
parent
41591a51f0
commit
9ad9e8d6ca
|
@ -2133,8 +2133,16 @@ err_unreg_client:
|
|||
|
||||
static void __exit nvme_rdma_cleanup_module(void)
|
||||
{
|
||||
struct nvme_rdma_ctrl *ctrl;
|
||||
|
||||
nvmf_unregister_transport(&nvme_rdma_transport);
|
||||
ib_unregister_client(&nvme_rdma_ib_client);
|
||||
|
||||
mutex_lock(&nvme_rdma_ctrl_mutex);
|
||||
list_for_each_entry(ctrl, &nvme_rdma_ctrl_list, list)
|
||||
nvme_delete_ctrl(&ctrl->ctrl);
|
||||
mutex_unlock(&nvme_rdma_ctrl_mutex);
|
||||
flush_workqueue(nvme_delete_wq);
|
||||
}
|
||||
|
||||
module_init(nvme_rdma_init_module);
|
||||
|
|
Loading…
Reference in New Issue