Loading net/llc/llc_input.c +13 −12 Original line number Diff line number Diff line Loading @@ -181,25 +181,26 @@ int llc_rcv(struct sk_buff *skb, struct net_device *dev, * LLC functionality */ rcv = rcu_dereference(sap->rcv_func); dest = llc_pdu_type(skb); if (unlikely(!dest || !llc_type_handlers[dest - 1])) { if (rcv) rcv(skb, dev, pt, orig_dev); else kfree_skb(skb); } else { if (rcv) { struct sk_buff *cskb = skb_clone(skb, GFP_ATOMIC); if (cskb) rcv(cskb, dev, pt, orig_dev); } dest = llc_pdu_type(skb); if (unlikely(!dest || !llc_type_handlers[dest - 1])) goto drop_put; llc_type_handlers[dest - 1](sap, skb); out_put: } llc_sap_put(sap); out: return 0; drop: kfree_skb(skb); goto out; drop_put: kfree_skb(skb); goto out_put; handle_station: if (!llc_station_handler) goto drop; Loading Loading
net/llc/llc_input.c +13 −12 Original line number Diff line number Diff line Loading @@ -181,25 +181,26 @@ int llc_rcv(struct sk_buff *skb, struct net_device *dev, * LLC functionality */ rcv = rcu_dereference(sap->rcv_func); dest = llc_pdu_type(skb); if (unlikely(!dest || !llc_type_handlers[dest - 1])) { if (rcv) rcv(skb, dev, pt, orig_dev); else kfree_skb(skb); } else { if (rcv) { struct sk_buff *cskb = skb_clone(skb, GFP_ATOMIC); if (cskb) rcv(cskb, dev, pt, orig_dev); } dest = llc_pdu_type(skb); if (unlikely(!dest || !llc_type_handlers[dest - 1])) goto drop_put; llc_type_handlers[dest - 1](sap, skb); out_put: } llc_sap_put(sap); out: return 0; drop: kfree_skb(skb); goto out; drop_put: kfree_skb(skb); goto out_put; handle_station: if (!llc_station_handler) goto drop; Loading