hc
2023-12-11 d2ccde1c8e90d38cee87a1b0309ad2827f3fd30d
kernel/drivers/base/class.c
....@@ -8,6 +8,7 @@
88 * Copyright (c) 2003-2004 IBM Corp.
99 */
1010
11
+#include <linux/device/class.h>
1112 #include <linux/device.h>
1213 #include <linux/module.h>
1314 #include <linux/init.h>
....@@ -117,16 +118,22 @@
117118 kset_put(&cls->p->subsys);
118119 }
119120
121
+static struct device *klist_class_to_dev(struct klist_node *n)
122
+{
123
+ struct device_private *p = to_device_private_class(n);
124
+ return p->device;
125
+}
126
+
120127 static void klist_class_dev_get(struct klist_node *n)
121128 {
122
- struct device *dev = container_of(n, struct device, knode_class);
129
+ struct device *dev = klist_class_to_dev(n);
123130
124131 get_device(dev);
125132 }
126133
127134 static void klist_class_dev_put(struct klist_node *n)
128135 {
129
- struct device *dev = container_of(n, struct device, knode_class);
136
+ struct device *dev = klist_class_to_dev(n);
130137
131138 put_device(dev);
132139 }
....@@ -277,7 +284,7 @@
277284 struct klist_node *start_knode = NULL;
278285
279286 if (start)
280
- start_knode = &start->knode_class;
287
+ start_knode = &start->p->knode_class;
281288 klist_iter_init_node(&class->p->klist_devices, &iter->ki, start_knode);
282289 iter->type = type;
283290 }
....@@ -304,7 +311,7 @@
304311 knode = klist_next(&iter->ki);
305312 if (!knode)
306313 return NULL;
307
- dev = container_of(knode, struct device, knode_class);
314
+ dev = klist_class_to_dev(knode);
308315 if (!iter->type || iter->type == dev->type)
309316 return dev;
310317 }
....@@ -471,7 +478,7 @@
471478 struct class_attribute_string *cs;
472479
473480 cs = container_of(attr, struct class_attribute_string, attr);
474
- return snprintf(buf, PAGE_SIZE, "%s\n", cs->str);
481
+ return sysfs_emit(buf, "%s\n", cs->str);
475482 }
476483
477484 EXPORT_SYMBOL_GPL(show_class_attr_string);