int error;
 
        if (flags & LOOKUP_RCU) {
-               parent = rcu_dereference(dentry->d_parent);
+               parent = ACCESS_ONCE(dentry->d_parent);
                dir = ACCESS_ONCE(parent->d_inode);
                if (!dir)
                        return -ECHILD;
        nfs_advise_use_readdirplus(dir);
  out_valid_noent:
        if (flags & LOOKUP_RCU) {
-               if (parent != rcu_dereference(dentry->d_parent))
+               if (parent != ACCESS_ONCE(dentry->d_parent))
                        return -ECHILD;
        } else
                dput(parent);
                struct inode *dir;
 
                if (flags & LOOKUP_RCU) {
-                       parent = rcu_dereference(dentry);
+                       parent = ACCESS_ONCE(dentry->d_parent);
                        dir = ACCESS_ONCE(parent->d_inode);
                        if (!dir)
                                return -ECHILD;
                        ret = -ECHILD;
                if (!(flags & LOOKUP_RCU))
                        dput(parent);
-               else if (parent != rcu_dereference(dentry))
+               else if (parent != ACCESS_ONCE(dentry->d_parent))
                        return -ECHILD;
                goto out;
        }