diff options
Diffstat (limited to 'fs/sysfs/inode.c')
-rw-r--r-- | fs/sysfs/inode.c | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/fs/sysfs/inode.c b/fs/sysfs/inode.c index 9889e54e1f13..fd7cd5f843d2 100644 --- a/fs/sysfs/inode.c +++ b/fs/sysfs/inode.c | |||
@@ -12,6 +12,7 @@ | |||
12 | #include <linux/namei.h> | 12 | #include <linux/namei.h> |
13 | #include <linux/backing-dev.h> | 13 | #include <linux/backing-dev.h> |
14 | #include <linux/capability.h> | 14 | #include <linux/capability.h> |
15 | #include <linux/errno.h> | ||
15 | #include "sysfs.h" | 16 | #include "sysfs.h" |
16 | 17 | ||
17 | extern struct super_block * sysfs_sb; | 18 | extern struct super_block * sysfs_sb; |
@@ -234,17 +235,18 @@ void sysfs_drop_dentry(struct sysfs_dirent * sd, struct dentry * parent) | |||
234 | } | 235 | } |
235 | } | 236 | } |
236 | 237 | ||
237 | void sysfs_hash_and_remove(struct dentry * dir, const char * name) | 238 | int sysfs_hash_and_remove(struct dentry * dir, const char * name) |
238 | { | 239 | { |
239 | struct sysfs_dirent * sd; | 240 | struct sysfs_dirent * sd; |
240 | struct sysfs_dirent * parent_sd; | 241 | struct sysfs_dirent * parent_sd; |
242 | int found = 0; | ||
241 | 243 | ||
242 | if (!dir) | 244 | if (!dir) |
243 | return; | 245 | return -ENOENT; |
244 | 246 | ||
245 | if (dir->d_inode == NULL) | 247 | if (dir->d_inode == NULL) |
246 | /* no inode means this hasn't been made visible yet */ | 248 | /* no inode means this hasn't been made visible yet */ |
247 | return; | 249 | return -ENOENT; |
248 | 250 | ||
249 | parent_sd = dir->d_fsdata; | 251 | parent_sd = dir->d_fsdata; |
250 | mutex_lock(&dir->d_inode->i_mutex); | 252 | mutex_lock(&dir->d_inode->i_mutex); |
@@ -255,8 +257,11 @@ void sysfs_hash_and_remove(struct dentry * dir, const char * name) | |||
255 | list_del_init(&sd->s_sibling); | 257 | list_del_init(&sd->s_sibling); |
256 | sysfs_drop_dentry(sd, dir); | 258 | sysfs_drop_dentry(sd, dir); |
257 | sysfs_put(sd); | 259 | sysfs_put(sd); |
260 | found = 1; | ||
258 | break; | 261 | break; |
259 | } | 262 | } |
260 | } | 263 | } |
261 | mutex_unlock(&dir->d_inode->i_mutex); | 264 | mutex_unlock(&dir->d_inode->i_mutex); |
265 | |||
266 | return found ? 0 : -ENOENT; | ||
262 | } | 267 | } |