aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/infiniband/core/user_mad.c
diff options
context:
space:
mode:
authorParav Pandit <parav@mellanox.com>2018-12-21 16:19:26 +0200
committerJason Gunthorpe <jgg@mellanox.com>2018-12-21 11:39:40 -0700
commitcdb53b65ae1b3beac2aaddf6c2d0cef798863466 (patch)
treec7f1a49e6a1ecdeb031a57d23779f88396135c5d /drivers/infiniband/core/user_mad.c
parentIB/umad: Refactor code to use cdev_device_add() (diff)
downloadlinux-dev-cdb53b65ae1b3beac2aaddf6c2d0cef798863466.tar.xz
linux-dev-cdb53b65ae1b3beac2aaddf6c2d0cef798863466.zip
IB/umad: Use class_groups and let core create class file
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>
Diffstat (limited to 'drivers/infiniband/core/user_mad.c')
-rw-r--r--drivers/infiniband/core/user_mad.c23
1 files changed, 14 insertions, 9 deletions
diff --git a/drivers/infiniband/core/user_mad.c b/drivers/infiniband/core/user_mad.c
index 363ed46facb6..7c95a35910f4 100644
--- a/drivers/infiniband/core/user_mad.c
+++ b/drivers/infiniband/core/user_mad.c
@@ -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");