/* Search socket list of the SAP and finds connections with same sap. Deliver clone to each.  */
static void llc_sap_mcast(struct llc_sap *sap, const struct llc_addr *laddr, struct sk_buff *skb)
/* Search socket list of the SAP and finds connections with same sap. Deliver clone to each.  */
static void llc_sap_mcast(struct llc_sap *sap, const struct llc_addr *laddr, struct sk_buff *skb)
{
	struct sock *sk;
	struct hlist_node *node;
	read_lock_bh(&sap->sk_list.lock);
	sk_for_each(sk, node, &sap->sk_list.list) {
		struct llc_sock *llc = llc_sk(sk);
		struct sk_buff *skb1;
		if (sk->sk_type != SOCK_DGRAM)
			continue;
		if (llc->laddr.lsap != laddr->lsap)
			continue;
		if (llc->dev != skb->dev)
			continue;
		skb1 = skb_clone(skb, GFP_ATOMIC);
		if (!skb1)
			break;
		sock_hold(sk);
		llc_sap_rcv(sap, skb1, sk);
		sock_put(sk);
	}
	read_unlock_bh(&sap->sk_list.lock);
}