提交 42293205 编写于 作者: W Wang Hai 提交者: sanglipeng

net/9p: Fix a potential socket leak in p9_socket_open

stable inclusion
from stable-v5.10.158
commit e01c1542379fb395e7da53706df598f38905dfbf
category: bugfix
bugzilla: https://gitee.com/openeuler/kernel/issues/I7NTXH

Reference: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=e01c1542379fb395e7da53706df598f38905dfbf

--------------------------------

[ Upstream commit dcc14cfd ]

Both p9_fd_create_tcp() and p9_fd_create_unix() will call
p9_socket_open(). If the creation of p9_trans_fd fails,
p9_fd_create_tcp() and p9_fd_create_unix() will return an
error directly instead of releasing the cscoket, which will
result in a socket leak.

This patch adds sock_release() to fix the leak issue.

Fixes: 6b18662e ("9p connect fixes")
Signed-off-by: NWang Hai <wanghai38@huawei.com>
ACKed-by: NAl Viro <viro@zeniv.linux.org.uk>
Signed-off-by: NDavid S. Miller <davem@davemloft.net>
Signed-off-by: NSasha Levin <sashal@kernel.org>
Signed-off-by: Nsanglipeng <sanglipeng1@jd.com>
上级 5ec1f905
...@@ -852,8 +852,10 @@ static int p9_socket_open(struct p9_client *client, struct socket *csocket) ...@@ -852,8 +852,10 @@ static int p9_socket_open(struct p9_client *client, struct socket *csocket)
struct file *file; struct file *file;
p = kzalloc(sizeof(struct p9_trans_fd), GFP_KERNEL); p = kzalloc(sizeof(struct p9_trans_fd), GFP_KERNEL);
if (!p) if (!p) {
sock_release(csocket);
return -ENOMEM; return -ENOMEM;
}
csocket->sk->sk_allocation = GFP_NOIO; csocket->sk->sk_allocation = GFP_NOIO;
file = sock_alloc_file(csocket, 0, NULL); file = sock_alloc_file(csocket, 0, NULL);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册