Commit 5d7edb3c authored by Roland Dreier's avatar Roland Dreier

[IB] Add idr_destroy() calls on module unload

Add idr_destroy() calls to the module_exit() functions of the four IB
driver modules that use idrs, so we don't leak idr_layer_cache objects
when these modules are unloaded.
Signed-off-by: default avatarRoland Dreier <rolandd@cisco.com>
parent e7d311da
...@@ -3323,6 +3323,7 @@ static void __exit ib_cm_cleanup(void) ...@@ -3323,6 +3323,7 @@ static void __exit ib_cm_cleanup(void)
flush_workqueue(cm.wq); flush_workqueue(cm.wq);
destroy_workqueue(cm.wq); destroy_workqueue(cm.wq);
ib_unregister_client(&cm_client); ib_unregister_client(&cm_client);
idr_destroy(&cm.local_id_table);
} }
module_init(ib_cm_init); module_init(ib_cm_init);
......
...@@ -975,6 +975,7 @@ static int __init ib_sa_init(void) ...@@ -975,6 +975,7 @@ static int __init ib_sa_init(void)
static void __exit ib_sa_cleanup(void) static void __exit ib_sa_cleanup(void)
{ {
ib_unregister_client(&sa_client); ib_unregister_client(&sa_client);
idr_destroy(&query_idr);
} }
module_init(ib_sa_init); module_init(ib_sa_init);
......
...@@ -1320,6 +1320,7 @@ static void __exit ib_ucm_cleanup(void) ...@@ -1320,6 +1320,7 @@ static void __exit ib_ucm_cleanup(void)
class_destroy(ib_ucm_class); class_destroy(ib_ucm_class);
cdev_del(&ib_ucm_cdev); cdev_del(&ib_ucm_cdev);
unregister_chrdev_region(IB_UCM_DEV, 1); unregister_chrdev_region(IB_UCM_DEV, 1);
idr_destroy(&ctx_id_table);
} }
module_init(ib_ucm_init); module_init(ib_ucm_init);
......
...@@ -762,6 +762,13 @@ static void __exit ib_uverbs_cleanup(void) ...@@ -762,6 +762,13 @@ static void __exit ib_uverbs_cleanup(void)
unregister_filesystem(&uverbs_event_fs); unregister_filesystem(&uverbs_event_fs);
class_unregister(&uverbs_class); class_unregister(&uverbs_class);
unregister_chrdev_region(IB_UVERBS_BASE_DEV, IB_UVERBS_MAX_DEVICES); unregister_chrdev_region(IB_UVERBS_BASE_DEV, IB_UVERBS_MAX_DEVICES);
idr_destroy(&ib_uverbs_pd_idr);
idr_destroy(&ib_uverbs_mr_idr);
idr_destroy(&ib_uverbs_mw_idr);
idr_destroy(&ib_uverbs_ah_idr);
idr_destroy(&ib_uverbs_cq_idr);
idr_destroy(&ib_uverbs_qp_idr);
idr_destroy(&ib_uverbs_srq_idr);
} }
module_init(ib_uverbs_init); module_init(ib_uverbs_init);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment