touch_atime(&last->link);
        }
 
-       if (nd->flags & LOOKUP_RCU) {
-               if (unlikely(unlazy_walk(nd, NULL, 0)))
-                       return ERR_PTR(-ECHILD);
-       }
-
        error = security_inode_follow_link(dentry, inode,
                                           nd->flags & LOOKUP_RCU);
        if (unlikely(error))
        nd->last_type = LAST_BIND;
        res = inode->i_link;
        if (!res) {
+               if (nd->flags & LOOKUP_RCU) {
+                       if (unlikely(unlazy_walk(nd, NULL, 0)))
+                               return ERR_PTR(-ECHILD);
+               }
                res = inode->i_op->follow_link(dentry, &last->cookie);
                if (IS_ERR_OR_NULL(res)) {
                        last->cookie = NULL;
                }
        }
        if (*res == '/') {
+               if (nd->flags & LOOKUP_RCU) {
+                       if (unlikely(unlazy_walk(nd, NULL, 0)))
+                               return ERR_PTR(-ECHILD);
+               }
                if (!nd->root.mnt)
                        set_root(nd);
                path_put(&nd->path);