hostfs_lookup: switch to d_splice_alias()

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
This commit is contained in:
Al Viro 2018-06-23 20:27:29 -04:00
parent ce397d215c
commit 50f3074011
1 changed files with 9 additions and 21 deletions

View File

@ -610,33 +610,21 @@ static struct dentry *hostfs_lookup(struct inode *ino, struct dentry *dentry,
int err;
inode = hostfs_iget(ino->i_sb);
if (IS_ERR(inode)) {
err = PTR_ERR(inode);
if (IS_ERR(inode))
goto out;
}
err = -ENOMEM;
name = dentry_name(dentry);
if (name == NULL)
goto out_put;
err = read_name(inode, name);
__putname(name);
if (err == -ENOENT) {
iput(inode);
inode = NULL;
if (name) {
err = read_name(inode, name);
__putname(name);
}
if (err) {
iput(inode);
inode = (err == -ENOENT) ? NULL : ERR_PTR(err);
}
else if (err)
goto out_put;
d_add(dentry, inode);
return NULL;
out_put:
iput(inode);
out:
return ERR_PTR(err);
return d_splice_alias(inode, dentry);
}
static int hostfs_link(struct dentry *to, struct inode *ino,