summaryrefslogtreecommitdiffstats
path: root/fs/namei.c
diff options
context:
space:
mode:
authorAl Viro <viro@zeniv.linux.org.uk>2012-06-11 00:05:36 +0200
committerAl Viro <viro@zeniv.linux.org.uk>2012-07-14 14:34:47 +0200
commitebfc3b49a7ac25920cb5be5445f602e51d2ea559 (patch)
treec3241f875dd04ab9f63b4e7ded7ed206e4df1b9f /fs/namei.c
parentfs/namei.c: don't pass nameidata to __lookup_hash() and lookup_real() (diff)
downloadlinux-ebfc3b49a7ac25920cb5be5445f602e51d2ea559.tar.xz
linux-ebfc3b49a7ac25920cb5be5445f602e51d2ea559.zip
don't pass nameidata to ->create()
boolean "does it have to be exclusive?" flag is passed instead; Local filesystem should just ignore it - the object is guaranteed not to be there yet. Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Diffstat (limited to 'fs/namei.c')
-rw-r--r--fs/namei.c3
1 files changed, 1 insertions, 2 deletions
diff --git a/fs/namei.c b/fs/namei.c
index fc01090a96c1..fd71156bfd74 100644
--- a/fs/namei.c
+++ b/fs/namei.c
@@ -2082,7 +2082,6 @@ int vfs_create(struct inode *dir, struct dentry *dentry, umode_t mode,
struct nameidata *nd)
{
int error = may_create(dir, dentry);
-
if (error)
return error;
@@ -2093,7 +2092,7 @@ int vfs_create(struct inode *dir, struct dentry *dentry, umode_t mode,
error = security_inode_create(dir, dentry, mode);
if (error)
return error;
- error = dir->i_op->create(dir, dentry, mode, nd);
+ error = dir->i_op->create(dir, dentry, mode, !nd || (nd->flags & LOOKUP_EXCL));
if (!error)
fsnotify_create(dir, dentry);
return error;