struct inode *inode = NULL;
        struct f2fs_dir_entry *de;
        struct page *page;
+       nid_t ino;
 
        if (dentry->d_name.len > F2FS_NAME_LEN)
                return ERR_PTR(-ENAMETOOLONG);
 
        de = f2fs_find_entry(dir, &dentry->d_name, &page);
-       if (de) {
-               nid_t ino = le32_to_cpu(de->ino);
-               f2fs_dentry_kunmap(dir, page);
-               f2fs_put_page(page, 0);
+       if (!de)
+               return d_splice_alias(inode, dentry);
 
-               inode = f2fs_iget(dir->i_sb, ino);
-               if (IS_ERR(inode))
-                       return ERR_CAST(inode);
+       ino = le32_to_cpu(de->ino);
+       f2fs_dentry_kunmap(dir, page);
+       f2fs_put_page(page, 0);
 
-               if (f2fs_has_inline_dots(inode)) {
-                       int err;
+       inode = f2fs_iget(dir->i_sb, ino);
+       if (IS_ERR(inode))
+               return ERR_CAST(inode);
+
+       if (f2fs_has_inline_dots(inode)) {
+               int err;
 
-                       err = __recover_dot_dentries(inode, dir->i_ino);
-                       if (err) {
-                               iget_failed(inode);
-                               return ERR_PTR(err);
-                       }
+               err = __recover_dot_dentries(inode, dir->i_ino);
+               if (err) {
+                       iget_failed(inode);
+                       return ERR_PTR(err);
                }
        }
-
        return d_splice_alias(inode, dentry);
 }