Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

Merge branch 'dev_kfree_skb'

Alexander Duyck says:

====================
Clean-up some bits related to netpoll

This patch set cleans up some minor items related to netpoll. The first
patch addresses an Rx clean-up bug that is triggered due to an assumption
that napi->poll wouldn't be called with a budget of 0. The other two
patches address dev_kfree_skb being called in the xmit path which isn't
valid since netpoll will call ndo_start_xmit with IRQs disabled.
====================

Signed-off-by: David S. Miller <davem@davemloft.net>

+5 -5
+2 -2
drivers/net/ethernet/intel/fm10k/fm10k_main.c
··· 610 610 unsigned int total_bytes = 0, total_packets = 0; 611 611 u16 cleaned_count = fm10k_desc_unused(rx_ring); 612 612 613 - do { 613 + while (likely(total_packets < budget)) { 614 614 union fm10k_rx_desc *rx_desc; 615 615 616 616 /* return some buffers to hardware, one at a time is too slow */ ··· 659 659 660 660 /* update budget accounting */ 661 661 total_packets++; 662 - } while (likely(total_packets < budget)); 662 + } 663 663 664 664 /* place incomplete frames back on ring for completion */ 665 665 rx_ring->skb = skb;
+1 -1
drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c
··· 3612 3612 u8 *dst_mac = skb_header_pointer(skb, 0, 0, NULL); 3613 3613 3614 3614 if (!dst_mac || is_link_local_ether_addr(dst_mac)) { 3615 - dev_kfree_skb(skb); 3615 + dev_kfree_skb_any(skb); 3616 3616 return NETDEV_TX_OK; 3617 3617 } 3618 3618
+2 -2
drivers/net/ethernet/realtek/r8169.c
··· 6884 6884 rtl8169_start_xmit(nskb, tp->dev); 6885 6885 } while (segs); 6886 6886 6887 - dev_kfree_skb(skb); 6887 + dev_consume_skb_any(skb); 6888 6888 } else if (skb->ip_summed == CHECKSUM_PARTIAL) { 6889 6889 if (skb_checksum_help(skb) < 0) 6890 6890 goto drop; ··· 6896 6896 drop: 6897 6897 stats = &tp->dev->stats; 6898 6898 stats->tx_dropped++; 6899 - dev_kfree_skb(skb); 6899 + dev_kfree_skb_any(skb); 6900 6900 } 6901 6901 } 6902 6902