hc
2024-01-03 2f7c68cb55ecb7331f2381deb497c27155f32faf
kernel/drivers/infiniband/core/cma_configfs.c
....@@ -33,7 +33,10 @@
3333 #include <linux/module.h>
3434 #include <linux/configfs.h>
3535 #include <rdma/ib_verbs.h>
36
+#include <rdma/rdma_cm.h>
37
+
3638 #include "core_priv.h"
39
+#include "cma_priv.h"
3740
3841 struct cma_device;
3942
....@@ -65,7 +68,7 @@
6568
6669 static bool filter_by_name(struct ib_device *ib_dev, void *cookie)
6770 {
68
- return !strcmp(ib_dev->name, cookie);
71
+ return !strcmp(dev_name(&ib_dev->dev), cookie);
6972 }
7073
7174 static int cma_configfs_params_get(struct config_item *item,
....@@ -91,7 +94,7 @@
9194
9295 static void cma_configfs_params_put(struct cma_device *cma_dev)
9396 {
94
- cma_deref_dev(cma_dev);
97
+ cma_dev_put(cma_dev);
9598 }
9699
97100 static ssize_t default_roce_mode_show(struct config_item *item,
....@@ -120,15 +123,18 @@
120123 {
121124 struct cma_device *cma_dev;
122125 struct cma_dev_port_group *group;
123
- int gid_type = ib_cache_gid_parse_type_str(buf);
126
+ int gid_type;
124127 ssize_t ret;
125
-
126
- if (gid_type < 0)
127
- return -EINVAL;
128128
129129 ret = cma_configfs_params_get(item, &cma_dev, &group);
130130 if (ret)
131131 return ret;
132
+
133
+ gid_type = ib_cache_gid_parse_type_str(buf);
134
+ if (gid_type < 0) {
135
+ cma_configfs_params_put(cma_dev);
136
+ return -EINVAL;
137
+ }
132138
133139 ret = cma_set_default_gid_type(cma_dev, group->port_num, gid_type);
134140
....@@ -215,7 +221,7 @@
215221 }
216222
217223 for (i = 0; i < ports_num; i++) {
218
- char port_str[10];
224
+ char port_str[11];
219225
220226 ports[i].port_num = i + 1;
221227 snprintf(port_str, sizeof(port_str), "%u", i + 1);
....@@ -309,12 +315,12 @@
309315 configfs_add_default_group(&cma_dev_group->ports_group,
310316 &cma_dev_group->device_group);
311317
312
- cma_deref_dev(cma_dev);
318
+ cma_dev_put(cma_dev);
313319 return &cma_dev_group->device_group;
314320
315321 fail:
316322 if (cma_dev)
317
- cma_deref_dev(cma_dev);
323
+ cma_dev_put(cma_dev);
318324 kfree(cma_dev_group);
319325 return ERR_PTR(err);
320326 }
....@@ -352,12 +358,18 @@
352358
353359 int __init cma_configfs_init(void)
354360 {
361
+ int ret;
362
+
355363 config_group_init(&cma_subsys.su_group);
356364 mutex_init(&cma_subsys.su_mutex);
357
- return configfs_register_subsystem(&cma_subsys);
365
+ ret = configfs_register_subsystem(&cma_subsys);
366
+ if (ret)
367
+ mutex_destroy(&cma_subsys.su_mutex);
368
+ return ret;
358369 }
359370
360371 void __exit cma_configfs_exit(void)
361372 {
362373 configfs_unregister_subsystem(&cma_subsys);
374
+ mutex_destroy(&cma_subsys.su_mutex);
363375 }