Cc: linux-kernel@xxxxxxxxxxxxxxx Cc: netdev@xxxxxxxxxxxxxxx Cc: cgroups@xxxxxxxxxxxxxxx Cc: "David S. Miller" <davem@xxxxxxxxxxxxx> Cc: Eric Dumazet <edumazet@xxxxxxxxxx> Cc: Jakub Kicinski <kuba@xxxxxxxxxx> Cc: Paolo Abeni <pabeni@xxxxxxxxxx> Cc: Willem de Bruijn <willemb@xxxxxxxxxx> Cc: Leon Romanovsky <leon@xxxxxxxxxx> Cc: Arnd Bergmann <arnd@xxxxxxxx> Cc: Christian Brauner <brauner@xxxxxxxxxx> Cc: Kuniyuki Iwashima <kuniyu@xxxxxxxxxx> Cc: Lennart Poettering <mzxreary@xxxxxxxxxxx> Cc: Luca Boccassi <bluca@xxxxxxxxxx> Cc: Tejun Heo <tj@xxxxxxxxxx> Cc: Johannes Weiner <hannes@xxxxxxxxxxx> Cc: "Michal Koutný" <mkoutny@xxxxxxxx> Signed-off-by: Alexander Mikhalitsyn <aleksandr.mikhalitsyn@xxxxxxxxxxxxx> --- net/unix/af_unix.c | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/net/unix/af_unix.c b/net/unix/af_unix.c index 7f8f3859cdb3..2b2c0036efc9 100644 --- a/net/unix/af_unix.c +++ b/net/unix/af_unix.c @@ -117,6 +117,7 @@ #include <linux/file.h> #include <linux/btf_ids.h> #include <linux/bpf-cgroup.h> +#include <linux/cgroup.h> static atomic_long_t unix_nr_socks; static struct hlist_head bsd_socket_buckets[UNIX_HASH_SIZE / 2]; @@ -861,6 +862,11 @@ static void unix_show_fdinfo(struct seq_file *m, struct socket *sock) int nr_fds = 0; if (sk) { +#ifdef CONFIG_SOCK_CGROUP_DATA + struct sock *peer; + u64 sk_cgroup_id = 0; +#endif + s_state = READ_ONCE(sk->sk_state); u = unix_sk(sk); @@ -874,6 +880,21 @@ static void unix_show_fdinfo(struct seq_file *m, struct socket *sock) nr_fds = unix_count_nr_fds(sk); seq_printf(m, "scm_fds: %u\n", nr_fds); + +#ifdef CONFIG_SOCK_CGROUP_DATA + sk_cgroup_id = cgroup_id(sock_cgroup_ptr(&sk->sk_cgrp_data)); + seq_printf(m, "cgroup_id: %llu\n", sk_cgroup_id); + + peer = unix_peer_get(sk); + if (peer) { + u64 peer_cgroup_id = 0; + + peer_cgroup_id = cgroup_id(sock_cgroup_ptr(&peer->sk_cgrp_data)); + sock_put(peer); + + seq_printf(m, "peer_cgroup_id: %llu\n", peer_cgroup_id); + } +#endif } } #else -- 2.43.0