From: Al Viro Date: Tue, 1 May 2018 02:57:42 +0000 (-0400) Subject: adfs_lookup: do not fail with ENOENT on negatives, use d_splice_alias() X-Git-Url: http://git.maquefel.me/?a=commitdiff_plain;h=9a7dddcaffff3890b9991d014c9a2b5392806526;p=linux.git adfs_lookup: do not fail with ENOENT on negatives, use d_splice_alias() Cc: Russell King Signed-off-by: Al Viro --- diff --git a/fs/adfs/dir.c b/fs/adfs/dir.c index 77a2d6ca3c606..e18eff854e1a4 100644 --- a/fs/adfs/dir.c +++ b/fs/adfs/dir.c @@ -252,17 +252,17 @@ adfs_lookup(struct inode *dir, struct dentry *dentry, unsigned int flags) error = adfs_dir_lookup_byname(dir, &dentry->d_name, &obj); if (error == 0) { - error = -EACCES; /* * This only returns NULL if get_empty_inode * fails. */ inode = adfs_iget(dir->i_sb, &obj); - if (inode) - error = 0; + if (!inode) + inode = ERR_PTR(-EACCES); + } else if (error != -ENOENT) { + inode = ERR_PTR(error); } - d_add(dentry, inode); - return ERR_PTR(error); + return d_splice_alias(inode, dentry); } /*