diff options
author | Al Viro <viro@zeniv.linux.org.uk> | 2012-06-11 00:05:36 +0200 |
---|---|---|
committer | Al Viro <viro@zeniv.linux.org.uk> | 2012-07-14 14:34:47 +0200 |
commit | ebfc3b49a7ac25920cb5be5445f602e51d2ea559 (patch) | |
tree | c3241f875dd04ab9f63b4e7ded7ed206e4df1b9f /fs/namei.c | |
parent | fs/namei.c: don't pass nameidata to __lookup_hash() and lookup_real() (diff) | |
download | linux-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.c | 3 |
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; |