inet_diag: bc: read cgroup id only for full sockets
authorDmitry Yakunin <zeil@yandex-team.ru>
Sat, 2 May 2020 15:34:42 +0000 (18:34 +0300)
committerDavid S. Miller <davem@davemloft.net>
Sat, 2 May 2020 23:42:51 +0000 (16:42 -0700)
Fix bug introduced by commit b1f3e43dbfac ("inet_diag: add support for
cgroup filter").

Signed-off-by: Dmitry Yakunin <zeil@yandex-team.ru>
Reported-by: syzbot+ee80f840d9bf6893223b@syzkaller.appspotmail.com
Reported-by: syzbot+13bef047dbfffa5cd1af@syzkaller.appspotmail.com
Fixes: b1f3e43dbfac ("inet_diag: add support for cgroup filter")
Signed-off-by: David S. Miller <davem@davemloft.net>
net/ipv4/inet_diag.c

index 0034092358c3802242bc4cd4c65e8a7f8dcd67d9..125f4f8a36b4d104a6ac555fb802e342504fb4a3 100644 (file)
@@ -746,7 +746,8 @@ int inet_diag_bc_sk(const struct nlattr *bc, struct sock *sk)
        else
                entry.mark = 0;
 #ifdef CONFIG_SOCK_CGROUP_DATA
-       entry.cgroup_id = cgroup_id(sock_cgroup_ptr(&sk->sk_cgrp_data));
+       entry.cgroup_id = sk_fullsock(sk) ?
+               cgroup_id(sock_cgroup_ptr(&sk->sk_cgrp_data)) : 0;
 #endif
 
        return inet_diag_bc_run(bc, &entry);