aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/base/class.c
diff options
context:
space:
mode:
authorDmitry Torokhov <dmitry.torokhov@gmail.com>2010-03-09 02:17:32 -0500
committerDmitry Torokhov <dmitry.torokhov@gmail.com>2010-03-09 02:17:32 -0500
commitce67eef6a112bb283c6db39f9195800f31f5599a (patch)
tree34f2e7fbd0b9838abba482dbb1a7db09e6fbb53c /drivers/base/class.c
parent776943fd6f104a6e8457dc95a17282e69e963666 (diff)
parent57d54889cd00db2752994b389ba714138652e60c (diff)
Merge commit 'v2.6.34-rc1' into for-linus
Diffstat (limited to 'drivers/base/class.c')
-rw-r--r--drivers/base/class.c18
1 files changed, 15 insertions, 3 deletions
diff --git a/drivers/base/class.c b/drivers/base/class.c
index 161746deab4b..0147f476b8a9 100644
--- a/drivers/base/class.c
+++ b/drivers/base/class.c
@@ -31,7 +31,7 @@ static ssize_t class_attr_show(struct kobject *kobj, struct attribute *attr,
31 ssize_t ret = -EIO; 31 ssize_t ret = -EIO;
32 32
33 if (class_attr->show) 33 if (class_attr->show)
34 ret = class_attr->show(cp->class, buf); 34 ret = class_attr->show(cp->class, class_attr, buf);
35 return ret; 35 return ret;
36} 36}
37 37
@@ -43,7 +43,7 @@ static ssize_t class_attr_store(struct kobject *kobj, struct attribute *attr,
43 ssize_t ret = -EIO; 43 ssize_t ret = -EIO;
44 44
45 if (class_attr->store) 45 if (class_attr->store)
46 ret = class_attr->store(cp->class, buf, count); 46 ret = class_attr->store(cp->class, class_attr, buf, count);
47 return ret; 47 return ret;
48} 48}
49 49
@@ -59,9 +59,11 @@ static void class_release(struct kobject *kobj)
59 else 59 else
60 pr_debug("class '%s' does not have a release() function, " 60 pr_debug("class '%s' does not have a release() function, "
61 "be careful\n", class->name); 61 "be careful\n", class->name);
62
63 kfree(cp);
62} 64}
63 65
64static struct sysfs_ops class_sysfs_ops = { 66static const struct sysfs_ops class_sysfs_ops = {
65 .show = class_attr_show, 67 .show = class_attr_show,
66 .store = class_attr_store, 68 .store = class_attr_store,
67}; 69};
@@ -488,6 +490,16 @@ void class_interface_unregister(struct class_interface *class_intf)
488 class_put(parent); 490 class_put(parent);
489} 491}
490 492
493ssize_t show_class_attr_string(struct class *class, struct class_attribute *attr,
494 char *buf)
495{
496 struct class_attribute_string *cs;
497 cs = container_of(attr, struct class_attribute_string, attr);
498 return snprintf(buf, PAGE_SIZE, "%s\n", cs->str);
499}
500
501EXPORT_SYMBOL_GPL(show_class_attr_string);
502
491struct class_compat { 503struct class_compat {
492 struct kobject *kobj; 504 struct kobject *kobj;
493}; 505};