diff options
Diffstat (limited to 'fs/namei.c')
-rw-r--r-- | fs/namei.c | 4 |
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 | /* |