mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2025-01-19 11:56:12 +07:00
clean up the failure exits after __do_follow_link() in do_filp_open()
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
This commit is contained in:
parent
36f3b4f690
commit
f1afe9efc8
13
fs/namei.c
13
fs/namei.c
@ -2426,15 +2426,12 @@ struct file *do_filp_open(int dfd, const char *pathname,
|
|||||||
nd.flags |= LOOKUP_PARENT;
|
nd.flags |= LOOKUP_PARENT;
|
||||||
error = __do_follow_link(&link, &nd, &cookie);
|
error = __do_follow_link(&link, &nd, &cookie);
|
||||||
if (unlikely(error)) {
|
if (unlikely(error)) {
|
||||||
if (!IS_ERR(cookie) && linki->i_op->put_link)
|
filp = ERR_PTR(error);
|
||||||
linki->i_op->put_link(link.dentry, &nd, cookie);
|
} else {
|
||||||
/* nd.path had been dropped */
|
nd.flags &= ~LOOKUP_PARENT;
|
||||||
nd.path = link;
|
filp = do_last(&nd, &path, open_flag, acc_mode, mode, pathname);
|
||||||
goto out_path;
|
|
||||||
}
|
}
|
||||||
nd.flags &= ~LOOKUP_PARENT;
|
if (!IS_ERR(cookie) && linki->i_op->put_link)
|
||||||
filp = do_last(&nd, &path, open_flag, acc_mode, mode, pathname);
|
|
||||||
if (linki->i_op->put_link)
|
|
||||||
linki->i_op->put_link(link.dentry, &nd, cookie);
|
linki->i_op->put_link(link.dentry, &nd, cookie);
|
||||||
path_put(&link);
|
path_put(&link);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user