From: Greg Kroah-Hartman Date: Wed, 27 May 2009 20:54:48 +0000 (-0700) Subject: deleted an incorrect network patch (wasn't relevant) X-Git-Tag: v2.6.27.25~17 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=385be0694763cbd5ca9478289e8b54ae90058a27;p=thirdparty%2Fkernel%2Fstable-queue.git deleted an incorrect network patch (wasn't relevant) --- diff --git a/queue-2.6.29/gianfar-fix-bug-under-load-after-introduction-of-skb-recycling.patch b/queue-2.6.29/gianfar-fix-bug-under-load-after-introduction-of-skb-recycling.patch deleted file mode 100644 index 8b3aec38d01..00000000000 --- a/queue-2.6.29/gianfar-fix-bug-under-load-after-introduction-of-skb-recycling.patch +++ /dev/null @@ -1,54 +0,0 @@ -From 1c2b64b6fe9c43ce6f81bb655ca6c4df1a06eb9e Mon Sep 17 00:00:00 2001 -From: Lennert Buytenhek -Date: Tue, 26 May 2009 15:26:22 -0700 -Subject: gianfar: fix BUG under load after introduction of skb recycling - -From: Lennert Buytenhek - -[ 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 -Tested-by: Michael Guntsche -Signed-off-by: Lennert Buytenhek -Signed-off-by: David S. Miller -Signed-off-by: Greg Kroah-Hartman ---- - 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++; diff --git a/queue-2.6.29/series b/queue-2.6.29/series index b244b1c2e25..0498561d26c 100644 --- a/queue-2.6.29/series +++ b/queue-2.6.29/series @@ -10,7 +10,6 @@ pktgen-do-not-access-flows-beyond-its-length.patch 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