From cdb53b65ae1b3beac2aaddf6c2d0cef798863466 Mon Sep 17 00:00:00 2001 From: Parav Pandit Date: Fri, 21 Dec 2018 16:19:26 +0200 Subject: 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 Reviewed-by: Jack Morgenstein Signed-off-by: Leon Romanovsky Signed-off-by: Jason Gunthorpe --- drivers/infiniband/core/user_mad.c | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) (limited to 'drivers/infiniband') 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"); -- cgit v1.2.3