summaryrefslogtreecommitdiff
path: root/fs/omfs/dir.c
diff options
context:
space:
mode:
authorAl Viro <viro@zeniv.linux.org.uk>2018-04-30 20:00:22 -0400
committerAl Viro <viro@zeniv.linux.org.uk>2018-05-22 14:27:58 -0400
commit18fbbfc2bfab4c45074bddb16c478b4366a265d5 (patch)
tree9c8bc577114fc045cc3ca0920493f8b34a28e2b6 /fs/omfs/dir.c
parent04bb1ba14195fb5b7ddb343f7d637149662accc8 (diff)
omfs_lookup(): report IO errors, use d_splice_alias()
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Diffstat (limited to 'fs/omfs/dir.c')
-rw-r--r--fs/omfs/dir.c7
1 files changed, 3 insertions, 4 deletions
diff --git a/fs/omfs/dir.c b/fs/omfs/dir.c
index b7146526afff..4bee3a72b9f3 100644
--- a/fs/omfs/dir.c
+++ b/fs/omfs/dir.c
@@ -305,11 +305,10 @@ static struct dentry *omfs_lookup(struct inode *dir, struct dentry *dentry,
ino_t ino = be64_to_cpu(oi->i_head.h_self);
brelse(bh);
inode = omfs_iget(dir->i_sb, ino);
- if (IS_ERR(inode))
- return ERR_CAST(inode);
+ } else if (bh != ERR_PTR(-ENOENT)) {
+ inode = ERR_CAST(bh);
}
- d_add(dentry, inode);
- return NULL;
+ return d_splice_alias(inode, dentry);
}
/* sanity check block's self pointer */