On Tue, 2015-04-28 at 19:11 -0700, Alexei Starovoitov wrote: > + if (pkt_dev->flags & F_DO_RX) { > + local_bh_disable(); > + atomic_add(burst, &pkt_dev->skb->users); > + do { > + ret = netif_receive_skb(pkt_dev->skb); > + if (ret == NET_RX_DROP) > + pkt_dev->errors++; > + pkt_dev->last_ok = 1; > + pkt_dev->sofar++; > + pkt_dev->seq_num++; > + } while (--burst > 0); > + local_bh_enable(); > + goto out; > + } > +
This looks buggy. skb can be put on a queue, so skb->next and skb->prev cannot be reused, or queues will be corrupted. Note that on TX, it is possible to have the same issue if you use a virtual device like bonding, and skb is queued on a slave qdisc. (Thats why we have this IFF_TX_SKB_SHARING flag) -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html