diff options
author | Al Viro <viro@zeniv.linux.org.uk> | 2018-04-30 22:57:42 -0400 |
---|---|---|
committer | Al Viro <viro@zeniv.linux.org.uk> | 2018-05-22 14:27:56 -0400 |
commit | 9a7dddcaffff3890b9991d014c9a2b5392806526 (patch) | |
tree | 380b9896726e763dd1b31c14e815c401e65532b0 | |
parent | 686bb96d1bddac7b3f4029bb7bd0a268fce45f03 (diff) |
adfs_lookup: do not fail with ENOENT on negatives, use d_splice_alias()
Cc: Russell King <linux@armlinux.org.uk>
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
-rw-r--r-- | fs/adfs/dir.c | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/fs/adfs/dir.c b/fs/adfs/dir.c index 77a2d6ca3c60..e18eff854e1a 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) | |||
252 | 252 | ||
253 | error = adfs_dir_lookup_byname(dir, &dentry->d_name, &obj); | 253 | error = adfs_dir_lookup_byname(dir, &dentry->d_name, &obj); |
254 | if (error == 0) { | 254 | if (error == 0) { |
255 | error = -EACCES; | ||
256 | /* | 255 | /* |
257 | * This only returns NULL if get_empty_inode | 256 | * This only returns NULL if get_empty_inode |
258 | * fails. | 257 | * fails. |
259 | */ | 258 | */ |
260 | inode = adfs_iget(dir->i_sb, &obj); | 259 | inode = adfs_iget(dir->i_sb, &obj); |
261 | if (inode) | 260 | if (!inode) |
262 | error = 0; | 261 | inode = ERR_PTR(-EACCES); |
262 | } else if (error != -ENOENT) { | ||
263 | inode = ERR_PTR(error); | ||
263 | } | 264 | } |
264 | d_add(dentry, inode); | 265 | return d_splice_alias(inode, dentry); |
265 | return ERR_PTR(error); | ||
266 | } | 266 | } |
267 | 267 | ||
268 | /* | 268 | /* |