aboutsummaryrefslogtreecommitdiffstats
path: root/fs/namei.c
diff options
context:
space:
mode:
authorAl Viro <viro@zeniv.linux.org.uk>2016-04-27 14:13:10 -0400
committerAl Viro <viro@zeniv.linux.org.uk>2016-05-02 19:51:14 -0400
commit0fb1ea0933153180df666f6694855ddfe9408e4a (patch)
treea3705c12a5f57fadcc5daf3d0eec70a8afa8d918 /fs/namei.c
parentdo_last(): take fput() on error after opening to out: (diff)
downloadlinux-dev-0fb1ea0933153180df666f6694855ddfe9408e4a.tar.xz
linux-dev-0fb1ea0933153180df666f6694855ddfe9408e4a.zip
atomic_open(): delay open_to_namei_flags() until the method call
nobody else needs that transformation. Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Diffstat (limited to 'fs/namei.c')
-rw-r--r--fs/namei.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/fs/namei.c b/fs/namei.c
index 38eab154cef7..3951cc4f34c5 100644
--- a/fs/namei.c
+++ b/fs/namei.c
@@ -2828,7 +2828,7 @@ static int atomic_open(struct nameidata *nd, struct dentry *dentry,
int *opened)
{
struct inode *dir = nd->path.dentry->d_inode;
- unsigned open_flag = open_to_namei_flags(op->open_flag);
+ unsigned open_flag = op->open_flag;
umode_t mode;
int error;
int acc_mode;
@@ -2886,8 +2886,9 @@ static int atomic_open(struct nameidata *nd, struct dentry *dentry,
file->f_path.dentry = DENTRY_NOT_SET;
file->f_path.mnt = nd->path.mnt;
- error = dir->i_op->atomic_open(dir, dentry, file, open_flag, mode,
- opened);
+ error = dir->i_op->atomic_open(dir, dentry, file,
+ open_to_namei_flags(open_flag),
+ mode, opened);
if (error < 0) {
if (create_error && error == -ENOENT)
error = create_error;