aboutsummaryrefslogtreecommitdiffstats
path: root/pending/kset-kill-subsys-attr.patch
diff options
Diffstat (limited to 'pending/kset-kill-subsys-attr.patch')
-rw-r--r--pending/kset-kill-subsys-attr.patch168
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);
-