提交 f1afe9ef 编写于 作者: A Al Viro

clean up the failure exits after __do_follow_link() in do_filp_open()

Signed-off-by: NAl Viro <viro@zeniv.linux.org.uk>
上级 36f3b4f6
......@@ -2426,15 +2426,12 @@ struct file *do_filp_open(int dfd, const char *pathname,
nd.flags |= LOOKUP_PARENT;
error = __do_follow_link(&link, &nd, &cookie);
if (unlikely(error)) {
if (!IS_ERR(cookie) && linki->i_op->put_link)
linki->i_op->put_link(link.dentry, &nd, cookie);
/* nd.path had been dropped */
nd.path = link;
goto out_path;
filp = ERR_PTR(error);
} else {
nd.flags &= ~LOOKUP_PARENT;
filp = do_last(&nd, &path, open_flag, acc_mode, mode, pathname);
}
nd.flags &= ~LOOKUP_PARENT;
filp = do_last(&nd, &path, open_flag, acc_mode, mode, pathname);
if (linki->i_op->put_link)
if (!IS_ERR(cookie) && linki->i_op->put_link)
linki->i_op->put_link(link.dentry, &nd, cookie);
path_put(&link);
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册