|
@@ -3848,24 +3848,28 @@ static int __init ib_cm_init(void)
|
|
|
INIT_LIST_HEAD(&cm.timewait_list);
|
|
|
|
|
|
ret = class_register(&cm_class);
|
|
|
- if (ret)
|
|
|
- return -ENOMEM;
|
|
|
+ if (ret) {
|
|
|
+ ret = -ENOMEM;
|
|
|
+ goto error1;
|
|
|
+ }
|
|
|
|
|
|
cm.wq = create_workqueue("ib_cm");
|
|
|
if (!cm.wq) {
|
|
|
ret = -ENOMEM;
|
|
|
- goto error1;
|
|
|
+ goto error2;
|
|
|
}
|
|
|
|
|
|
ret = ib_register_client(&cm_client);
|
|
|
if (ret)
|
|
|
- goto error2;
|
|
|
+ goto error3;
|
|
|
|
|
|
return 0;
|
|
|
-error2:
|
|
|
+error3:
|
|
|
destroy_workqueue(cm.wq);
|
|
|
-error1:
|
|
|
+error2:
|
|
|
class_unregister(&cm_class);
|
|
|
+error1:
|
|
|
+ idr_destroy(&cm.local_id_table);
|
|
|
return ret;
|
|
|
}
|
|
|
|