aboutsummaryrefslogtreecommitdiffstats
path: root/c99.patch
diff options
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>2016-11-23 11:19:41 +0100
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2016-11-23 11:19:41 +0100
commit8fb5fa5c9e538e3a5a08a1479c7c59d0e5d63d7a (patch)
treee398a61e97ba25d1c30575382a4f701e56d3605e /c99.patch
parente7d7dc0e0e7ab68f1845e11b7574d83ac8015e0e (diff)
downloadpatches-8fb5fa5c9e538e3a5a08a1479c7c59d0e5d63d7a.tar.gz
more patches
Diffstat (limited to 'c99.patch')
-rw-r--r--c99.patch91
1 files changed, 91 insertions, 0 deletions
diff --git a/c99.patch b/c99.patch
new file mode 100644
index 00000000000000..e1847596abfb8f
--- /dev/null
+++ b/c99.patch
@@ -0,0 +1,91 @@
+From foo@baz Wed Nov 23 11:18:27 CET 2016
+Date: Wed, 23 Nov 2016 11:18:27 +0100
+To: Greg KH <gregkh@linuxfoundation.org>
+From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+Subject: remove class_attrs from struct class
+
+This field is no longer used or needed (use class_groups instead), so it
+can be removed along with the driver core functionality that created and
+removed these files.
+
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/base/class.c | 33 ---------------------------------
+ include/linux/device.h | 2 --
+ 2 files changed, 35 deletions(-)
+
+--- a/drivers/base/class.c
++++ b/drivers/base/class.c
+@@ -119,36 +119,6 @@ static void class_put(struct class *cls)
+ kset_put(&cls->p->subsys);
+ }
+
+-static int add_class_attrs(struct class *cls)
+-{
+- int i;
+- int error = 0;
+-
+- if (cls->class_attrs) {
+- for (i = 0; cls->class_attrs[i].attr.name; i++) {
+- error = class_create_file(cls, &cls->class_attrs[i]);
+- if (error)
+- goto error;
+- }
+- }
+-done:
+- return error;
+-error:
+- while (--i >= 0)
+- class_remove_file(cls, &cls->class_attrs[i]);
+- goto done;
+-}
+-
+-static void remove_class_attrs(struct class *cls)
+-{
+- int i;
+-
+- if (cls->class_attrs) {
+- for (i = 0; cls->class_attrs[i].attr.name; i++)
+- class_remove_file(cls, &cls->class_attrs[i]);
+- }
+-}
+-
+ static void klist_class_dev_get(struct klist_node *n)
+ {
+ struct device *dev = container_of(n, struct device, knode_class);
+@@ -217,8 +187,6 @@ int __class_register(struct class *cls,
+ }
+ 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;
+ }
+ EXPORT_SYMBOL_GPL(__class_register);
+@@ -226,7 +194,6 @@ EXPORT_SYMBOL_GPL(__class_register);
+ 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);
+ }
+--- a/include/linux/device.h
++++ b/include/linux/device.h
+@@ -359,7 +359,6 @@ int subsys_virtual_register(struct bus_t
+ * struct class - device classes
+ * @name: Name of the class.
+ * @owner: The module owner.
+- * @class_attrs: Default attributes of this class.
+ * @class_groups: Default attributes of this class.
+ * @dev_groups: Default attributes of the devices that belong to the class.
+ * @dev_kobj: The kobject that represents this class and links it into the hierarchy.
+@@ -388,7 +387,6 @@ struct class {
+ const char *name;
+ struct module *owner;
+
+- struct class_attribute *class_attrs;
+ const struct attribute_group **class_groups;
+ const struct attribute_group **dev_groups;
+ struct kobject *dev_kobj;