diff options
author | Alexander Duyck <alexander.h.duyck@redhat.com> | 2015-05-01 13:34:44 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2015-05-04 00:06:55 -0400 |
commit | eb781397904e5d6b90c80463eaa9dc592831bdae (patch) | |
tree | b7265c3a79c6dd56e70858d88a74c32840f932a2 /drivers/net/ethernet/realtek/r8169.c | |
parent | 59486329b46f31532ab032014fbaae72e9f190c3 (diff) |
r8169: Do not use dev_kfree_skb in xmit path
The function r8169_csum_workaround is called in the ndo_start_xmit path of
the r8169 driver. As such it should not be using dev_kfree_skb as it is
not irq safe, so instead we should be using dev_kfree_skb_any for freeing
in the dropped path, and dev_consume_skb_any for any frames that were
transmitted.
Signed-off-by: Alexander Duyck <alexander.h.duyck@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/ethernet/realtek/r8169.c')
-rw-r--r-- | drivers/net/ethernet/realtek/r8169.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/drivers/net/ethernet/realtek/r8169.c b/drivers/net/ethernet/realtek/r8169.c index c70ab40d8698..3df51faf18ae 100644 --- a/drivers/net/ethernet/realtek/r8169.c +++ b/drivers/net/ethernet/realtek/r8169.c | |||
@@ -6884,7 +6884,7 @@ static void r8169_csum_workaround(struct rtl8169_private *tp, | |||
6884 | rtl8169_start_xmit(nskb, tp->dev); | 6884 | rtl8169_start_xmit(nskb, tp->dev); |
6885 | } while (segs); | 6885 | } while (segs); |
6886 | 6886 | ||
6887 | dev_kfree_skb(skb); | 6887 | dev_consume_skb_any(skb); |
6888 | } else if (skb->ip_summed == CHECKSUM_PARTIAL) { | 6888 | } else if (skb->ip_summed == CHECKSUM_PARTIAL) { |
6889 | if (skb_checksum_help(skb) < 0) | 6889 | if (skb_checksum_help(skb) < 0) |
6890 | goto drop; | 6890 | goto drop; |
@@ -6896,7 +6896,7 @@ static void r8169_csum_workaround(struct rtl8169_private *tp, | |||
6896 | drop: | 6896 | drop: |
6897 | stats = &tp->dev->stats; | 6897 | stats = &tp->dev->stats; |
6898 | stats->tx_dropped++; | 6898 | stats->tx_dropped++; |
6899 | dev_kfree_skb(skb); | 6899 | dev_kfree_skb_any(skb); |
6900 | } | 6900 | } |
6901 | } | 6901 | } |
6902 | 6902 | ||