mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
synced 2025-01-07 22:42:04 +00:00
fs: pull up trailing slashes check for O_CREAT
Perform the check for trailing slashes right in the fastpath check and don't bother with any additional work. Signed-off-by: Christian Brauner <brauner@kernel.org>
This commit is contained in:
parent
c65d41c5a5
commit
4770d96a6d
12
fs/namei.c
12
fs/namei.c
@ -3618,6 +3618,9 @@ static struct dentry *lookup_fast_for_open(struct nameidata *nd, int open_flag)
|
||||
struct dentry *dentry;
|
||||
|
||||
if (open_flag & O_CREAT) {
|
||||
if (trailing_slashes(nd))
|
||||
return ERR_PTR(-EISDIR);
|
||||
|
||||
/* Don't bother on an O_EXCL create */
|
||||
if (open_flag & O_EXCL)
|
||||
return NULL;
|
||||
@ -3684,20 +3687,13 @@ static const char *open_last_lookups(struct nameidata *nd,
|
||||
bool unlazied;
|
||||
|
||||
/* can stay in rcuwalk if not auditing */
|
||||
if (dentry && audit_dummy_context()) {
|
||||
if (trailing_slashes(nd))
|
||||
return ERR_PTR(-EISDIR);
|
||||
if (dentry && audit_dummy_context())
|
||||
goto finish_lookup;
|
||||
}
|
||||
unlazied = dentry ? try_to_unlazy_next(nd, dentry) :
|
||||
try_to_unlazy(nd);
|
||||
if (!unlazied)
|
||||
return ERR_PTR(-ECHILD);
|
||||
}
|
||||
if (trailing_slashes(nd)) {
|
||||
dput(dentry);
|
||||
return ERR_PTR(-EISDIR);
|
||||
}
|
||||
if (dentry)
|
||||
goto finish_lookup;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user