diff options
author | David S. Miller <davem@davemloft.net> | 2014-03-13 00:22:20 +0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2014-03-13 00:22:20 +0400 |
commit | 8a83d9396a4945dcaa129b14a725311e5846b2d5 (patch) | |
tree | a7217a3be0171a0b78a474e0dbb2401675882f2a /drivers/net/ethernet/realtek/r8169.c | |
parent | d52afde96ffda8c9d3f0e32ffe87b6cc3290580e (diff) | |
parent | c9974ad4aeb36003860100221a594f3c0ccc3f78 (diff) | |
download | linux-8a83d9396a4945dcaa129b14a725311e5846b2d5.tar.xz |
Merge branch 'dev_kfree_skb_any'
Eric W. Biederman says:
====================
Using dev_kfree_skb_any for functions called in multiple contexts
This patchset should be an uncontroversial set of changes to change
dev_kfree_skb to dev_kfree_skb_any for code paths that are called in
hard irq contexts in addition to other contexts. netpoll is the reason
this code gets called in multiple contexts.
There is more coming but these changes are a good starting place, and
stand on their own.
Since the last round changes to the rx path have been removed netpoll
will changed to avoid that.
====================
Signed-off-by: David S. Miller <davem@davemloft.net>
Acked-by: Eric Dumazet <edumazet@google.com>
Diffstat (limited to 'drivers/net/ethernet/realtek/r8169.c')
-rw-r--r-- | drivers/net/ethernet/realtek/r8169.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/drivers/net/ethernet/realtek/r8169.c b/drivers/net/ethernet/realtek/r8169.c index e9779653cd4c..cf947337e0d6 100644 --- a/drivers/net/ethernet/realtek/r8169.c +++ b/drivers/net/ethernet/realtek/r8169.c @@ -5834,7 +5834,7 @@ static void rtl8169_tx_clear_range(struct rtl8169_private *tp, u32 start, tp->TxDescArray + entry); if (skb) { tp->dev->stats.tx_dropped++; - dev_kfree_skb(skb); + dev_kfree_skb_any(skb); tx_skb->skb = NULL; } } @@ -6059,7 +6059,7 @@ static netdev_tx_t rtl8169_start_xmit(struct sk_buff *skb, err_dma_1: rtl8169_unmap_tx_skb(d, tp->tx_skb + entry, txd); err_dma_0: - dev_kfree_skb(skb); + dev_kfree_skb_any(skb); err_update_stats: dev->stats.tx_dropped++; return NETDEV_TX_OK; @@ -6142,7 +6142,7 @@ static void rtl_tx(struct net_device *dev, struct rtl8169_private *tp) tp->tx_stats.packets++; tp->tx_stats.bytes += tx_skb->skb->len; u64_stats_update_end(&tp->tx_stats.syncp); - dev_kfree_skb(tx_skb->skb); + dev_kfree_skb_any(tx_skb->skb); tx_skb->skb = NULL; } dirty_tx++; |