aboutsummaryrefslogtreecommitdiffstats
path: root/fs/namei.c
diff options
context:
space:
mode:
Diffstat (limited to 'fs/namei.c')
-rw-r--r--fs/namei.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/fs/namei.c b/fs/namei.c
index e584f04745b5..2b8f823eda44 100644
--- a/fs/namei.c
+++ b/fs/namei.c
@@ -1709,6 +1709,8 @@ struct file *do_filp_open(int dfd, const char *pathname,
1709 dir = nd.path.dentry; 1709 dir = nd.path.dentry;
1710 nd.flags &= ~LOOKUP_PARENT; 1710 nd.flags &= ~LOOKUP_PARENT;
1711 nd.flags |= LOOKUP_CREATE | LOOKUP_OPEN; 1711 nd.flags |= LOOKUP_CREATE | LOOKUP_OPEN;
1712 if (flag & O_EXCL)
1713 nd.flags |= LOOKUP_EXCL;
1712 mutex_lock(&dir->d_inode->i_mutex); 1714 mutex_lock(&dir->d_inode->i_mutex);
1713 path.dentry = lookup_hash(&nd); 1715 path.dentry = lookup_hash(&nd);
1714 path.mnt = nd.path.mnt; 1716 path.mnt = nd.path.mnt;
@@ -1906,7 +1908,7 @@ struct dentry *lookup_create(struct nameidata *nd, int is_dir)
1906 if (nd->last_type != LAST_NORM) 1908 if (nd->last_type != LAST_NORM)
1907 goto fail; 1909 goto fail;
1908 nd->flags &= ~LOOKUP_PARENT; 1910 nd->flags &= ~LOOKUP_PARENT;
1909 nd->flags |= LOOKUP_CREATE; 1911 nd->flags |= LOOKUP_CREATE | LOOKUP_EXCL;
1910 nd->intent.open.flags = O_EXCL; 1912 nd->intent.open.flags = O_EXCL;
1911 1913
1912 /* 1914 /*