open_last_lookups(): move complete_walk() into do_open()
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
This commit is contained in:
parent
b94e0b32c8
commit
ff326a3299
18
fs/namei.c
18
fs/namei.c
|
@ -3128,10 +3128,7 @@ static const char *open_last_lookups(struct nameidata *nd,
|
||||||
if (nd->last_type != LAST_NORM) {
|
if (nd->last_type != LAST_NORM) {
|
||||||
if (nd->depth)
|
if (nd->depth)
|
||||||
put_link(nd);
|
put_link(nd);
|
||||||
res = handle_dots(nd, nd->last_type);
|
return handle_dots(nd, nd->last_type);
|
||||||
if (likely(!res))
|
|
||||||
res = ERR_PTR(complete_walk(nd));
|
|
||||||
return res;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!(open_flag & O_CREAT)) {
|
if (!(open_flag & O_CREAT)) {
|
||||||
|
@ -3196,13 +3193,9 @@ finish_lookup:
|
||||||
if (nd->depth)
|
if (nd->depth)
|
||||||
put_link(nd);
|
put_link(nd);
|
||||||
res = step_into(nd, WALK_TRAILING, dentry, inode, seq);
|
res = step_into(nd, WALK_TRAILING, dentry, inode, seq);
|
||||||
if (unlikely(res)) {
|
if (unlikely(res))
|
||||||
nd->flags &= ~(LOOKUP_OPEN|LOOKUP_CREATE|LOOKUP_EXCL);
|
nd->flags &= ~(LOOKUP_OPEN|LOOKUP_CREATE|LOOKUP_EXCL);
|
||||||
return res;
|
return res;
|
||||||
}
|
|
||||||
|
|
||||||
/* Why this, you ask? _Now_ we might have grown LOOKUP_JUMPED... */
|
|
||||||
return ERR_PTR(complete_walk(nd));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -3216,6 +3209,11 @@ static int do_open(struct nameidata *nd,
|
||||||
int acc_mode;
|
int acc_mode;
|
||||||
int error;
|
int error;
|
||||||
|
|
||||||
|
if (!(file->f_mode & (FMODE_OPENED | FMODE_CREATED))) {
|
||||||
|
error = complete_walk(nd);
|
||||||
|
if (error)
|
||||||
|
return error;
|
||||||
|
}
|
||||||
if (!(file->f_mode & FMODE_CREATED))
|
if (!(file->f_mode & FMODE_CREATED))
|
||||||
audit_inode(nd->name, nd->path.dentry, 0);
|
audit_inode(nd->name, nd->path.dentry, 0);
|
||||||
if (open_flag & O_CREAT) {
|
if (open_flag & O_CREAT) {
|
||||||
|
|
Loading…
Reference in New Issue