提交 b1f2d93c 编写于 作者: D David Brazdil 提交者: Zheng Zengkai

selinux: vsock: Set SID for socket returned by accept()

stable inclusion
from stable-5.10.27
commit 5ebb9947b488a73c03a7d1aec7142f3873d6704f
bugzilla: 51493

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

[ Upstream commit 1f935e8e ]

For AF_VSOCK, accept() currently returns sockets that are unlabelled.
Other socket families derive the child's SID from the SID of the parent
and the SID of the incoming packet. This is typically done as the
connected socket is placed in the queue that accept() removes from.

Reuse the existing 'security_sk_clone' hook to copy the SID from the
parent (server) socket to the child. There is no packet SID in this
case.

Fixes: d021c344 ("VSOCK: Introduce VM Sockets")
Signed-off-by: NDavid Brazdil <dbrazdil@google.com>
Signed-off-by: NDavid S. Miller <davem@davemloft.net>
Signed-off-by: NSasha Levin <sashal@kernel.org>
Signed-off-by: NChen Jun <chenjun102@huawei.com>
Acked-by: N  Weilong Chen <chenweilong@huawei.com>
Signed-off-by: NZheng Zengkai <zhengzengkai@huawei.com>
上级 0ee79a5f
...@@ -738,6 +738,7 @@ static struct sock *__vsock_create(struct net *net, ...@@ -738,6 +738,7 @@ static struct sock *__vsock_create(struct net *net,
vsk->buffer_size = psk->buffer_size; vsk->buffer_size = psk->buffer_size;
vsk->buffer_min_size = psk->buffer_min_size; vsk->buffer_min_size = psk->buffer_min_size;
vsk->buffer_max_size = psk->buffer_max_size; vsk->buffer_max_size = psk->buffer_max_size;
security_sk_clone(parent, sk);
} else { } else {
vsk->trusted = ns_capable_noaudit(&init_user_ns, CAP_NET_ADMIN); vsk->trusted = ns_capable_noaudit(&init_user_ns, CAP_NET_ADMIN);
vsk->owner = get_current_cred(); vsk->owner = get_current_cred();
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册