mirror of
https://github.com/torvalds/linux.git
synced 2024-11-10 14:11:52 +00:00
fix a regression in atomic_open()
open("/foo/no_such_file", O_RDONLY | O_CREAT) on should fail with EACCES when /foo is not writable; failing with ENOENT is obviously wrong. That got broken by a braino introduced when moving the creat_error logics from atomic_open() to lookup_open(). Easy to fix, fortunately. Spotted-by: "Yan, Zheng" <ukernel@gmail.com> Tested-by: "Yan, Zheng" <ukernel@gmail.com> Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
This commit is contained in:
parent
3d56c25e3b
commit
a01e718f72
10
fs/namei.c
10
fs/namei.c
@ -2995,9 +2995,13 @@ static int atomic_open(struct nameidata *nd, struct dentry *dentry,
|
||||
}
|
||||
if (*opened & FILE_CREATED)
|
||||
fsnotify_create(dir, dentry);
|
||||
path->dentry = dentry;
|
||||
path->mnt = nd->path.mnt;
|
||||
return 1;
|
||||
if (unlikely(d_is_negative(dentry))) {
|
||||
error = -ENOENT;
|
||||
} else {
|
||||
path->dentry = dentry;
|
||||
path->mnt = nd->path.mnt;
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
dput(dentry);
|
||||
|
Loading…
Reference in New Issue
Block a user