+++ /dev/null
-From 1c2b64b6fe9c43ce6f81bb655ca6c4df1a06eb9e Mon Sep 17 00:00:00 2001
-From: Lennert Buytenhek <buytenh@wantstofly.org>
-Date: Tue, 26 May 2009 15:26:22 -0700
-Subject: gianfar: fix BUG under load after introduction of skb recycling
-
-From: Lennert Buytenhek <buytenh@wantstofly.org>
-
-[ Upstream commit 4e2fd555199977c5994d1a4d2d3b8761b20ca4c7 ]
-
-Since commit 0fd56bb5be6455d0d42241e65aed057244665e5e ("gianfar:
-Add support for skb recycling"), gianfar puts skbuffs that are in
-the rx ring back onto the recycle list as-is in case there was a
-receive error, but this breaks the following invariant: that all
-skbuffs on the recycle list have skb->data = skb->head + NET_SKB_PAD.
-
-The RXBUF_ALIGNMENT realignment done in gfar_new_skb() will be done
-twice on skbuffs recycled in this way, causing there not to be enough
-room in the skb anymore to receive a full packet, eventually leading
-to an skb_over_panic from gfar_clean_rx_ring() -> skb_put().
-
-Resetting the skb->data pointer to skb->head + NET_SKB_PAD before
-putting the skb back onto the recycle list restores the mentioned
-invariant, and should fix this issue.
-
-Reported-by: Michael Guntsche <mike@it-loops.com>
-Tested-by: Michael Guntsche <mike@it-loops.com>
-Signed-off-by: Lennert Buytenhek <buytenh@wantstofly.org>
-Signed-off-by: David S. Miller <davem@davemloft.net>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
----
- drivers/net/gianfar.c | 11 ++++++++++-
- 1 file changed, 10 insertions(+), 1 deletion(-)
-
---- a/drivers/net/gianfar.c
-+++ b/drivers/net/gianfar.c
-@@ -1822,8 +1822,17 @@ int gfar_clean_rx_ring(struct net_device
-
- if (unlikely(!newskb))
- newskb = skb;
-- else if (skb)
-+ else if (skb) {
-+ /*
-+ * We need to reset ->data to what it
-+ * was before gfar_new_skb() re-aligned
-+ * it to an RXBUF_ALIGNMENT boundary
-+ * before we put the skb back on the
-+ * recycle list.
-+ */
-+ skb->data = skb->head + NET_SKB_PAD;
- dev_kfree_skb_any(skb);
-+ }
- } else {
- /* Increment the number of packets */
- dev->stats.rx_packets++;
myr10ge-again-fix-lro_gen_skb-alignment.patch
vlan-macvlan-fix-null-pointer-dereferences-in-ethtool-handlers.patch
mac8390-fix-regression-caused-during-net_device_ops-conversion.patch
-gianfar-fix-bug-under-load-after-introduction-of-skb-recycling.patch
bonding-fix-alb-mode-locking-regression.patch
bonding-remove-debug-printk.patch
r8169-avoid-losing-msi-interrupts.patch