Merge tag 'jfs-4.10' of git://github.com/kleikamp/linux-shaggy
[linux-2.6-microblaze.git] / drivers / base / class.c
index 71059e3..a2b2896 100644 (file)
@@ -163,6 +163,18 @@ static void klist_class_dev_put(struct klist_node *n)
        put_device(dev);
 }
 
+static int class_add_groups(struct class *cls,
+                           const struct attribute_group **groups)
+{
+       return sysfs_create_groups(&cls->p->subsys.kobj, groups);
+}
+
+static void class_remove_groups(struct class *cls,
+                               const struct attribute_group **groups)
+{
+       return sysfs_remove_groups(&cls->p->subsys.kobj, groups);
+}
+
 int __class_register(struct class *cls, struct lock_class_key *key)
 {
        struct subsys_private *cp;
@@ -203,6 +215,8 @@ int __class_register(struct class *cls, struct lock_class_key *key)
                kfree(cp);
                return error;
        }
+       error = class_add_groups(class_get(cls), cls->class_groups);
+       class_put(cls);
        error = add_class_attrs(class_get(cls));
        class_put(cls);
        return error;
@@ -213,6 +227,7 @@ void class_unregister(struct class *cls)
 {
        pr_debug("device class '%s': unregistering\n", cls->name);
        remove_class_attrs(cls);
+       class_remove_groups(cls, cls->class_groups);
        kset_unregister(&cls->p->subsys);
 }