X-Git-Url: https://git.stricted.de/?a=blobdiff_plain;f=fs%2Fsysfs%2Fdir.c;h=ea9120a830d824feb798db501a4b61fbd98f6071;hb=57cc7215b70856dc6bae8e55b00ecd7b1d7429b1;hp=27e1102e303e8d403d7e81514e2283efd332ffba;hpb=fe15ce446beb3a33583af81ffe6c9d01a75314ed;p=GitHub%2Fmt8127%2Fandroid_kernel_alcatel_ttab.git diff --git a/fs/sysfs/dir.c b/fs/sysfs/dir.c index 27e1102e303e..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) static int sysfs_dentry_revalidate(struct dentry *dentry, struct nameidata *nd) { - struct sysfs_dirent *sd = dentry->d_fsdata; + struct sysfs_dirent *sd; int is_dir; + if (nd->flags & LOOKUP_RCU) + return -ECHILD; + + sd = dentry->d_fsdata; mutex_lock(&sysfs_mutex); /* The sysfs dirent has been deleted */ @@ -701,7 +705,7 @@ static struct dentry * sysfs_lookup(struct inode *dir, struct dentry *dentry, /* instantiate and hash dentry */ ret = d_find_alias(inode); if (!ret) { - dentry->d_op = &sysfs_dentry_ops; + d_set_d_op(dentry, &sysfs_dentry_ops); dentry->d_fsdata = sysfs_get(sd); d_add(dentry, inode); } else {