diff options
author | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2014-01-13 17:05:13 -0500 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2014-01-13 17:05:13 -0500 |
commit | a9f138b0e537de55933335d580ebd38c2bc53c47 (patch) | |
tree | f54235f920d392519bde975d42aa4b4534f9561a /fs/sysfs | |
parent | 8634c422c1b7e50ca8e346f65afc140d93a3212c (diff) |
Revert "kernfs, sysfs, driver-core: implement kernfs_remove_self() and its wrappers"
This reverts commit 1ae06819c77cff1ea2833c94f8c093fe8a5c79db.
Tejun writes:
I'm sorry but can you please revert the whole series?
get_active() waiting while a node is deactivated has potential
to lead to deadlock and that deactivate/reactivate interface is
something fundamentally flawed and that cgroup will have to work
with the remove_self() like everybody else. IOW, I think the
first posting was correct.
Cc: Tejun Heo <tj@kernel.org>
Cc: Alan Stern <stern@rowland.harvard.edu>
Cc: kbuild test robot <fengguang.wu@intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'fs/sysfs')
-rw-r--r-- | fs/sysfs/file.c | 23 |
1 files changed, 0 insertions, 23 deletions
diff --git a/fs/sysfs/file.c b/fs/sysfs/file.c index 1b8b91b67fdb..810cf6e613e5 100644 --- a/fs/sysfs/file.c +++ b/fs/sysfs/file.c | |||
@@ -372,29 +372,6 @@ void sysfs_remove_file_ns(struct kobject *kobj, const struct attribute *attr, | |||
372 | } | 372 | } |
373 | EXPORT_SYMBOL_GPL(sysfs_remove_file_ns); | 373 | EXPORT_SYMBOL_GPL(sysfs_remove_file_ns); |
374 | 374 | ||
375 | /** | ||
376 | * sysfs_remove_file_self - remove an object attribute from its own method | ||
377 | * @kobj: object we're acting for | ||
378 | * @attr: attribute descriptor | ||
379 | * | ||
380 | * See kernfs_remove_self() for details. | ||
381 | */ | ||
382 | bool sysfs_remove_file_self(struct kobject *kobj, const struct attribute *attr) | ||
383 | { | ||
384 | struct kernfs_node *parent = kobj->sd; | ||
385 | struct kernfs_node *kn; | ||
386 | bool ret; | ||
387 | |||
388 | kn = kernfs_find_and_get(parent, attr->name); | ||
389 | if (WARN_ON_ONCE(!kn)) | ||
390 | return false; | ||
391 | |||
392 | ret = kernfs_remove_self(kn); | ||
393 | |||
394 | kernfs_put(kn); | ||
395 | return ret; | ||
396 | } | ||
397 | |||
398 | void sysfs_remove_files(struct kobject *kobj, const struct attribute **ptr) | 375 | void sysfs_remove_files(struct kobject *kobj, const struct attribute **ptr) |
399 | { | 376 | { |
400 | int i; | 377 | int i; |