headers: kobject.h redux
[GitHub/mt8127/android_kernel_alcatel_ttab.git] / fs / sysfs / dir.c
index 27e1102e303e8d403d7e81514e2283efd332ffba..ea9120a830d824feb798db501a4b61fbd98f6071 100644 (file)
@@ -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 {