diff options
Diffstat (limited to 'pending/kset-kill-subsys-attr.patch')
| -rw-r--r-- | pending/kset-kill-subsys-attr.patch | 168 |
1 files changed, 0 insertions, 168 deletions
diff --git a/pending/kset-kill-subsys-attr.patch b/pending/kset-kill-subsys-attr.patch deleted file mode 100644 index 22f564a7083600..00000000000000 --- a/pending/kset-kill-subsys-attr.patch +++ /dev/null @@ -1,168 +0,0 @@ -From kay.sievers@vrfy.org Fri Nov 2 08:38:35 2007 -From: Kay Sievers <kay.sievers@vrfy.org> -Subject: Driver Core: kill subsys_attribute and default sysfs ops -Date: Fri, 02 Nov 2007 13:47:53 +0100 -Message-Id: <1194007673.2194.12.camel@lov.site> -Mime-Version: 1.0 -Content-Transfer-Encoding: 7bit -Status: RO -Content-Length: 4503 - -Remove the no longer needed subsys_attributes, they are all converted to -the more sensical kobj_attributes. - -There is no longer a magic fallback in sysfs attribute operations, all -kobjects which create simple attributes need explicitely a ktype assigned, -which thells the core what was intended here. - -!!! DO NOT APPLY !!!! - Until this is converted: - drivers/parisc/pdc_stable.c -!!! DO NOT APPLY !!!! - -Signed-off-by: Kay Sievers <kay.sievers@vrfy.org> ---- - fs/sysfs/file.c | 63 +++++++----------------------------------------- - include/linux/kobject.h | 9 ------ - lib/kobject.c | 21 ---------------- - 3 files changed, 10 insertions(+), 83 deletions(-) - ---- a/fs/sysfs/file.c -+++ b/fs/sysfs/file.c -@@ -20,43 +20,6 @@ - - #include "sysfs.h" - --#define to_sattr(a) container_of(a,struct subsys_attribute, attr) -- --/* -- * Subsystem file operations. -- * These operations allow subsystems to have files that can be -- * read/written. -- */ --static ssize_t --subsys_attr_show(struct kobject * kobj, struct attribute * attr, char * page) --{ -- struct kset *kset = to_kset(kobj); -- struct subsys_attribute * sattr = to_sattr(attr); -- ssize_t ret = -EIO; -- -- if (sattr->show) -- ret = sattr->show(kset, page); -- return ret; --} -- --static ssize_t --subsys_attr_store(struct kobject * kobj, struct attribute * attr, -- const char * page, size_t count) --{ -- struct kset *kset = to_kset(kobj); -- struct subsys_attribute * sattr = to_sattr(attr); -- ssize_t ret = -EIO; -- -- if (sattr->store) -- ret = sattr->store(kset, page, count); -- return ret; --} -- --static struct sysfs_ops subsys_sysfs_ops = { -- .show = subsys_attr_show, -- .store = subsys_attr_store, --}; -- - /* - * There's one sysfs_buffer for each open file and one - * sysfs_open_dirent for each sysfs_dirent with one or more open -@@ -350,29 +313,23 @@ static int sysfs_open_file(struct inode - { - struct sysfs_dirent *attr_sd = file->f_path.dentry->d_fsdata; - struct kobject *kobj = attr_sd->s_parent->s_dir.kobj; -- struct sysfs_buffer * buffer; -- struct sysfs_ops * ops = NULL; -- int error; -+ struct sysfs_buffer *buffer; -+ struct sysfs_ops *ops; -+ int error = -EACCES; - - /* need attr_sd for attr and ops, its parent for kobj */ - if (!sysfs_get_active_two(attr_sd)) - return -ENODEV; - -- /* if the kobject has no ktype, then we assume that it is a subsystem -- * itself, and use ops for it. -- */ -- if (kobj->ktype) -+ /* every kobject with an attribute needs a ktype assigned */ -+ if (kobj->ktype && kobj->ktype->sysfs_ops) - ops = kobj->ktype->sysfs_ops; -- else -- ops = &subsys_sysfs_ops; -- -- error = -EACCES; -- -- /* No sysfs operations, either from having no subsystem, -- * or the subsystem have no operations. -- */ -- if (!ops) -+ else { -+ printk(KERN_ERR "missing sysfs attribute operations for " -+ "kobject: %s\n", kobject_name(kobj)); -+ WARN_ON(1); - goto err_out; -+ } - - /* File needs write support. - * The inode's perms must say it's ok, ---- a/include/linux/kobject.h -+++ b/include/linux/kobject.h -@@ -208,15 +208,6 @@ extern struct kset *power_kset; - extern int __must_check subsystem_register(struct kset *); - extern void subsystem_unregister(struct kset *); - --struct subsys_attribute { -- struct attribute attr; -- ssize_t (*show)(struct kset *, char *); -- ssize_t (*store)(struct kset *, const char *, size_t); --}; -- --extern int __must_check subsys_create_file(struct kset *, -- struct subsys_attribute *); -- - #if defined(CONFIG_HOTPLUG) - int kobject_uevent(struct kobject *kobj, enum kobject_action action); - int kobject_uevent_env(struct kobject *kobj, enum kobject_action action, ---- a/lib/kobject.c -+++ b/lib/kobject.c -@@ -669,26 +669,6 @@ void subsystem_unregister(struct kset *s - kset_unregister(s); - } - --/** -- * subsystem_create_file - export sysfs attribute file. -- * @s: subsystem. -- * @a: subsystem attribute descriptor. -- */ -- --int subsys_create_file(struct kset *s, struct subsys_attribute *a) --{ -- int error = 0; -- -- if (!s || !a) -- return -EINVAL; -- -- if (kset_get(s)) { -- error = sysfs_create_file(&s->kobj, &a->attr); -- kset_put(s); -- } -- return error; --} -- - static void kset_release(struct kobject *kobj) - { - struct kset *kset = container_of(kobj, struct kset, kobj); -@@ -793,4 +773,3 @@ EXPORT_SYMBOL(kset_unregister); - - EXPORT_SYMBOL(subsystem_register); - EXPORT_SYMBOL(subsystem_unregister); --EXPORT_SYMBOL(subsys_create_file); - |
