OSDN Git Service

IB/umad: Use class_groups and let core create class file
authorParav Pandit <parav@mellanox.com>
Fri, 21 Dec 2018 14:19:26 +0000 (16:19 +0200)
committerJason Gunthorpe <jgg@mellanox.com>
Fri, 21 Dec 2018 18:39:40 +0000 (11:39 -0700)
Use class->class_groups core kernel facility to create the abi version
file instead of open coding.

Signed-off-by: Parav Pandit <parav@mellanox.com>
Reviewed-by: Jack Morgenstein <jackm@mellanox.com>
Signed-off-by: Leon Romanovsky <leonro@mellanox.com>
Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
drivers/infiniband/core/user_mad.c

index 363ed46..7c95a35 100644 (file)
@@ -1147,17 +1147,28 @@ static ssize_t show_port(struct device *dev, struct device_attribute *attr,
 }
 static DEVICE_ATTR(port, S_IRUGO, show_port, NULL);
 
-static CLASS_ATTR_STRING(abi_version, S_IRUGO,
-                        __stringify(IB_USER_MAD_ABI_VERSION));
-
 static char *umad_devnode(struct device *dev, umode_t *mode)
 {
        return kasprintf(GFP_KERNEL, "infiniband/%s", dev_name(dev));
 }
 
+static ssize_t abi_version_show(struct class *class,
+                               struct class_attribute *attr, char *buf)
+{
+       return sprintf(buf, "%d\n", IB_USER_MAD_ABI_VERSION);
+}
+static CLASS_ATTR_RO(abi_version);
+
+static struct attribute *umad_class_attrs[] = {
+       &class_attr_abi_version.attr,
+       NULL,
+};
+ATTRIBUTE_GROUPS(umad_class);
+
 static struct class umad_class = {
        .name           = "infiniband_mad",
        .devnode        = umad_devnode,
+       .class_groups   = umad_class_groups,
 };
 
 static void ib_umad_release_port(struct device *device)
@@ -1367,12 +1378,6 @@ static int __init ib_umad_init(void)
                goto out_chrdev;
        }
 
-       ret = class_create_file(&umad_class, &class_attr_abi_version.attr);
-       if (ret) {
-               pr_err("couldn't create abi_version attribute\n");
-               goto out_class;
-       }
-
        ret = ib_register_client(&umad_client);
        if (ret) {
                pr_err("couldn't register ib_umad client\n");