diff options
author | Mark Fasheh <mfasheh@suse.com> | 2008-01-29 14:35:18 -0800 |
---|---|---|
committer | Mark Fasheh <mfasheh@suse.com> | 2008-04-18 08:56:10 -0700 |
commit | a839c5afcdc345aecb35b0d3bcd0e09b571329c3 (patch) | |
tree | 58fda1dc26c12edc365e7cd2fe12f8dfc7554dd2 /fs/sysfs/symlink.c | |
parent | 5cc3bf2786f63cceb191c3c02ddd83c6f38a7d64 (diff) | |
download | lwn-a839c5afcdc345aecb35b0d3bcd0e09b571329c3.tar.gz lwn-a839c5afcdc345aecb35b0d3bcd0e09b571329c3.zip |
sysfs: Allow removal of symlinks in the sysfs root
Allow callers of sysfs_remove_link() to pass a NULL kobj, in which case
sysfs_root will be used as the parent directory. This allows us to tear down
top level symlinks created via sysfs_create_link(), which already has
similar handling of a NULL parent object.
Signed-off-by: Mark Fasheh <mfasheh@suse.com>
Acked-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'fs/sysfs/symlink.c')
-rw-r--r-- | fs/sysfs/symlink.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/fs/sysfs/symlink.c b/fs/sysfs/symlink.c index 5f66c4466151..817f5966edca 100644 --- a/fs/sysfs/symlink.c +++ b/fs/sysfs/symlink.c @@ -87,7 +87,14 @@ int sysfs_create_link(struct kobject * kobj, struct kobject * target, const char void sysfs_remove_link(struct kobject * kobj, const char * name) { - sysfs_hash_and_remove(kobj->sd, name); + struct sysfs_dirent *parent_sd = NULL; + + if (!kobj) + parent_sd = &sysfs_root; + else + parent_sd = kobj->sd; + + sysfs_hash_and_remove(parent_sd, name); } static int sysfs_get_target_path(struct sysfs_dirent *parent_sd, |