sock_diag: don't broadcast kernel sockets
[cascardo/linux.git] / net / core / sock.c
index e4be66f..08f16db 100644 (file)
@@ -1454,7 +1454,7 @@ void sk_destruct(struct sock *sk)
 
 static void __sk_free(struct sock *sk)
 {
-       if (unlikely(sock_diag_has_destroy_listeners(sk)))
+       if (unlikely(sock_diag_has_destroy_listeners(sk) && sk->sk_net_refcnt))
                sock_diag_broadcast_destroy(sk);
        else
                sk_destruct(sk);