mirror of
https://github.com/raspberrypi/linux.git
synced 2025-12-06 01:49:46 +00:00
simplify nfs_atomic_open_v23()
[ Upstream commitaae9db5739] 1) finish_no_open() takes ERR_PTR() as dentry now. 2) caller of ->atomic_open() will call d_lookup_done() itself, no need to do it here. Reviewed-by: NeilBrown <neil@brown.name> Signed-off-by: Al Viro <viro@zeniv.linux.org.uk> Stable-dep-of:85d2c2392a("NFSv2/v3: Fix error handling in nfs_atomic_open_v23()") Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
b8fa372190
commit
21b35335a4
16
fs/nfs/dir.c
16
fs/nfs/dir.c
@@ -2260,7 +2260,7 @@ int nfs_atomic_open_v23(struct inode *dir, struct dentry *dentry,
|
||||
struct file *file, unsigned int open_flags,
|
||||
umode_t mode)
|
||||
{
|
||||
|
||||
struct dentry *res = NULL;
|
||||
/* Same as look+open from lookup_open(), but with different O_TRUNC
|
||||
* handling.
|
||||
*/
|
||||
@@ -2275,21 +2275,15 @@ int nfs_atomic_open_v23(struct inode *dir, struct dentry *dentry,
|
||||
if (error)
|
||||
return error;
|
||||
return finish_open(file, dentry, NULL);
|
||||
} else if (d_in_lookup(dentry)) {
|
||||
}
|
||||
if (d_in_lookup(dentry)) {
|
||||
/* The only flags nfs_lookup considers are
|
||||
* LOOKUP_EXCL and LOOKUP_RENAME_TARGET, and
|
||||
* we want those to be zero so the lookup isn't skipped.
|
||||
*/
|
||||
struct dentry *res = nfs_lookup(dir, dentry, 0);
|
||||
|
||||
d_lookup_done(dentry);
|
||||
if (unlikely(res)) {
|
||||
if (IS_ERR(res))
|
||||
return PTR_ERR(res);
|
||||
return finish_no_open(file, res);
|
||||
}
|
||||
res = nfs_lookup(dir, dentry, 0);
|
||||
}
|
||||
return finish_no_open(file, NULL);
|
||||
return finish_no_open(file, res);
|
||||
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(nfs_atomic_open_v23);
|
||||
|
||||
Reference in New Issue
Block a user