diff options
Diffstat (limited to 'fs/sysfs/dir.c')
-rw-r--r-- | fs/sysfs/dir.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/fs/sysfs/dir.c b/fs/sysfs/dir.c index 3e076caa8daf..ea9120a830d8 100644 --- a/fs/sysfs/dir.c +++ b/fs/sysfs/dir.c | |||
@@ -239,9 +239,13 @@ static int sysfs_dentry_delete(const struct dentry *dentry) | |||
239 | 239 | ||
240 | static int sysfs_dentry_revalidate(struct dentry *dentry, struct nameidata *nd) | 240 | static int sysfs_dentry_revalidate(struct dentry *dentry, struct nameidata *nd) |
241 | { | 241 | { |
242 | struct sysfs_dirent *sd = dentry->d_fsdata; | 242 | struct sysfs_dirent *sd; |
243 | int is_dir; | 243 | int is_dir; |
244 | 244 | ||
245 | if (nd->flags & LOOKUP_RCU) | ||
246 | return -ECHILD; | ||
247 | |||
248 | sd = dentry->d_fsdata; | ||
245 | mutex_lock(&sysfs_mutex); | 249 | mutex_lock(&sysfs_mutex); |
246 | 250 | ||
247 | /* The sysfs dirent has been deleted */ | 251 | /* The sysfs dirent has been deleted */ |