X-Git-Url: http://git.rot13.org/?a=blobdiff_plain;f=net%2Fllc%2Fllc_sap.c;h=61cb8cf7d1532a4d4b1abd51244e863fc7e8b887;hb=1a68d41a334a406d4bd35999f0be4d47f193e477;hp=20c4eb5c1ac6829f425382d87cb1d3d52052865b;hpb=28e4b224955cbe30275b2a7842e729023a4f4b03;p=powerpc.git diff --git a/net/llc/llc_sap.c b/net/llc/llc_sap.c index 20c4eb5c1a..61cb8cf7d1 100644 --- a/net/llc/llc_sap.c +++ b/net/llc/llc_sap.c @@ -51,10 +51,10 @@ void llc_save_primitive(struct sock *sk, struct sk_buff* skb, u8 prim) { struct sockaddr_llc *addr; - if (skb->sk->sk_type == SOCK_STREAM) /* See UNIX98 */ - return; /* save primitive for use by the user. */ addr = llc_ui_skb_cb(skb); + + memset(addr, 0, sizeof(*addr)); addr->sllc_family = sk->sk_family; addr->sllc_arphrd = skb->dev->type; addr->sllc_test = prim == LLC_TEST_PRIM; @@ -330,6 +330,9 @@ static void llc_sap_mcast(struct llc_sap *sap, if (llc->laddr.lsap != laddr->lsap) continue; + if (llc->dev != skb->dev) + continue; + skb1 = skb_clone(skb, GFP_ATOMIC); if (!skb1) break;