On 8/13/19 5:42 AM, Hayes Wang wrote: > Use skb_add_rx_frag() to reduce the memory copy for rx data. > > Use a new list of rx_used to store the rx buffer which couldn't be > reused yet. > > Besides, the total number of rx buffer may be increased or decreased > dynamically. And it is limited by RTL8152_MAX_RX_AGG. > > Signed-off-by: Hayes Wang <hayeswang@xxxxxxxxxxx> > ... > skb->protocol = eth_type_trans(skb, netdev); > rtl_rx_vlan_tag(rx_desc, skb); > if (work_done < budget) { > napi_gro_receive(napi, skb); > work_done++; > stats->rx_packets++; > - stats->rx_bytes += pkt_len; > + stats->rx_bytes += skb->len; use-after-free. skb is no longer in your hands after napi_gro_receive()