Commit eb781397 authored by Alexander Duyck's avatar Alexander Duyck Committed by David S. Miller

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: default avatarAlexander Duyck <alexander.h.duyck@redhat.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 59486329
...@@ -6884,7 +6884,7 @@ static void r8169_csum_workaround(struct rtl8169_private *tp, ...@@ -6884,7 +6884,7 @@ static void r8169_csum_workaround(struct rtl8169_private *tp,
rtl8169_start_xmit(nskb, tp->dev); rtl8169_start_xmit(nskb, tp->dev);
} while (segs); } while (segs);
dev_kfree_skb(skb); dev_consume_skb_any(skb);
} else if (skb->ip_summed == CHECKSUM_PARTIAL) { } else if (skb->ip_summed == CHECKSUM_PARTIAL) {
if (skb_checksum_help(skb) < 0) if (skb_checksum_help(skb) < 0)
goto drop; goto drop;
...@@ -6896,7 +6896,7 @@ static void r8169_csum_workaround(struct rtl8169_private *tp, ...@@ -6896,7 +6896,7 @@ static void r8169_csum_workaround(struct rtl8169_private *tp,
drop: drop:
stats = &tp->dev->stats; stats = &tp->dev->stats;
stats->tx_dropped++; stats->tx_dropped++;
dev_kfree_skb(skb); dev_kfree_skb_any(skb);
} }
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment