]> git.kernelconcepts.de Git - karo-tx-linux.git/commitdiff
xen: balloon: Use static attribute groups for sysfs entries
authorTakashi Iwai <tiwai@suse.de>
Thu, 5 Feb 2015 20:38:59 +0000 (21:38 +0100)
committerDavid Vrabel <david.vrabel@citrix.com>
Mon, 16 Mar 2015 14:49:13 +0000 (14:49 +0000)
Instead of manual calls of device_create_file(), device_remove_file()
and sysfs_create_group(), assign static attribute groups to the device
to register.  This simplifies the code and avoids possible races.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: David Vrabel <david.vrabel@citrix.com>
drivers/xen/xen-balloon.c

index e555845d61faff522d51e00799606a9657234a9c..39e7ef8d39579e12f3912571ce6fb832e503ee77 100644 (file)
@@ -193,13 +193,18 @@ static DEVICE_ATTR(target, S_IRUGO | S_IWUSR,
                   show_target, store_target);
 
 
-static struct device_attribute *balloon_attrs[] = {
-       &dev_attr_target_kb,
-       &dev_attr_target,
-       &dev_attr_schedule_delay.attr,
-       &dev_attr_max_schedule_delay.attr,
-       &dev_attr_retry_count.attr,
-       &dev_attr_max_retry_count.attr
+static struct attribute *balloon_attrs[] = {
+       &dev_attr_target_kb.attr,
+       &dev_attr_target.attr,
+       &dev_attr_schedule_delay.attr.attr,
+       &dev_attr_max_schedule_delay.attr.attr,
+       &dev_attr_retry_count.attr.attr,
+       &dev_attr_max_retry_count.attr.attr,
+       NULL
+};
+
+static const struct attribute_group balloon_group = {
+       .attrs = balloon_attrs
 };
 
 static struct attribute *balloon_info_attrs[] = {
@@ -214,6 +219,12 @@ static const struct attribute_group balloon_info_group = {
        .attrs = balloon_info_attrs
 };
 
+static const struct attribute_group *balloon_groups[] = {
+       &balloon_group,
+       &balloon_info_group,
+       NULL
+};
+
 static struct bus_type balloon_subsys = {
        .name = BALLOON_CLASS_NAME,
        .dev_name = BALLOON_CLASS_NAME,
@@ -221,7 +232,7 @@ static struct bus_type balloon_subsys = {
 
 static int register_balloon(struct device *dev)
 {
-       int i, error;
+       int error;
 
        error = subsys_system_register(&balloon_subsys, NULL);
        if (error)
@@ -229,6 +240,7 @@ static int register_balloon(struct device *dev)
 
        dev->id = 0;
        dev->bus = &balloon_subsys;
+       dev->groups = balloon_groups;
 
        error = device_register(dev);
        if (error) {
@@ -236,24 +248,7 @@ static int register_balloon(struct device *dev)
                return error;
        }
 
-       for (i = 0; i < ARRAY_SIZE(balloon_attrs); i++) {
-               error = device_create_file(dev, balloon_attrs[i]);
-               if (error)
-                       goto fail;
-       }
-
-       error = sysfs_create_group(&dev->kobj, &balloon_info_group);
-       if (error)
-               goto fail;
-
        return 0;
-
- fail:
-       while (--i >= 0)
-               device_remove_file(dev, balloon_attrs[i]);
-       device_unregister(dev);
-       bus_unregister(&balloon_subsys);
-       return error;
 }
 
 MODULE_LICENSE("GPL");