From 932cf774d8ac1167f5e3d9c32ee42c99bb019fce Mon Sep 17 00:00:00 2001 From: "Eric W. Biederman" Date: Wed, 12 Oct 2011 21:55:08 +0000 Subject: [PATCH] --- yaml --- r: 266869 b: refs/heads/master c: 672d82c18d222e51b40ff47e660fc54ec3e3e0a9 h: refs/heads/master i: 266867: 7c77f549666d4bd24cb6beb09d59b1bc2a6592ca v: v3 --- [refs] | 2 +- trunk/drivers/base/class.c | 17 +++++++++++++++-- trunk/include/linux/device.h | 2 ++ 3 files changed, 18 insertions(+), 3 deletions(-) diff --git a/[refs] b/[refs] index e97d56addc27..7f29e2afc28a 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 487505c257021fc06a7d05753cf27b011487f1dc +refs/heads/master: 672d82c18d222e51b40ff47e660fc54ec3e3e0a9 diff --git a/trunk/drivers/base/class.c b/trunk/drivers/base/class.c index 4f1df2e8fd74..b80d91cc8c3a 100644 --- a/trunk/drivers/base/class.c +++ b/trunk/drivers/base/class.c @@ -47,6 +47,18 @@ static ssize_t class_attr_store(struct kobject *kobj, struct attribute *attr, return ret; } +static const void *class_attr_namespace(struct kobject *kobj, + const struct attribute *attr) +{ + struct class_attribute *class_attr = to_class_attr(attr); + struct subsys_private *cp = to_subsys_private(kobj); + const void *ns = NULL; + + if (class_attr->namespace) + ns = class_attr->namespace(cp->class, class_attr); + return ns; +} + static void class_release(struct kobject *kobj) { struct subsys_private *cp = to_subsys_private(kobj); @@ -72,8 +84,9 @@ static const struct kobj_ns_type_operations *class_child_ns_type(struct kobject } static const struct sysfs_ops class_sysfs_ops = { - .show = class_attr_show, - .store = class_attr_store, + .show = class_attr_show, + .store = class_attr_store, + .namespace = class_attr_namespace, }; static struct kobj_type class_ktype = { diff --git a/trunk/include/linux/device.h b/trunk/include/linux/device.h index c20dfbfc49b4..ea70bb2e6878 100644 --- a/trunk/include/linux/device.h +++ b/trunk/include/linux/device.h @@ -350,6 +350,8 @@ struct class_attribute { char *buf); ssize_t (*store)(struct class *class, struct class_attribute *attr, const char *buf, size_t count); + const void *(*namespace)(struct class *class, + const struct class_attribute *attr); }; #define CLASS_ATTR(_name, _mode, _show, _store) \