]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
3.0-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 15 Mar 2012 23:44:39 +0000 (16:44 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 15 Mar 2012 23:44:39 +0000 (16:44 -0700)
added patches:
sfc-fix-assignment-of-ip_summed-for-pre-allocated-skbs.patch

queue-3.0/series
queue-3.0/sfc-fix-assignment-of-ip_summed-for-pre-allocated-skbs.patch [new file with mode: 0644]

index b0c6bee12d0319c951e3dc63bea61568341f000d..c96ce7782b8b26a7450d8834d2b9c930a5d44dfc 100644 (file)
@@ -27,3 +27,4 @@ block-fix-null-pointer-dereference-in-sd_revalidate_disk.patch
 block-sx8-fix-pointer-math-issue-getting-fw-version.patch
 block-fix-__blkdev_get-and-add_disk-race-condition.patch
 block-use-a-freezable-workqueue-for-disk-event-polling.patch
+sfc-fix-assignment-of-ip_summed-for-pre-allocated-skbs.patch
diff --git a/queue-3.0/sfc-fix-assignment-of-ip_summed-for-pre-allocated-skbs.patch b/queue-3.0/sfc-fix-assignment-of-ip_summed-for-pre-allocated-skbs.patch
new file mode 100644 (file)
index 0000000..a62b6d5
--- /dev/null
@@ -0,0 +1,51 @@
+From 2bf745f12af273bdff17ad422c1605cdee754d93 Mon Sep 17 00:00:00 2001
+From: Ben Hutchings <bhutchings@solarflare.com>
+Date: Sat, 25 Feb 2012 00:03:10 +0000
+Subject: sfc: Fix assignment of ip_summed for pre-allocated skbs
+
+From: Ben Hutchings <bhutchings@solarflare.com>
+
+commit ff3bc1e7527504a93710535611b2f812f3bb89bf upstream.
+
+When pre-allocating skbs for received packets, we set ip_summed =
+CHECKSUM_UNNCESSARY.  We used to change it back to CHECKSUM_NONE when
+the received packet had an incorrect checksum or unhandled protocol.
+
+Commit bc8acf2c8c3e43fcc192762a9f964b3e9a17748b ('drivers/net: avoid
+some skb->ip_summed initializations') mistakenly replaced the latter
+assignment with a DEBUG-only assertion that ip_summed ==
+CHECKSUM_NONE.  This assertion is always false, but it seems no-one
+has exercised this code path in a DEBUG build.
+
+Fix this by moving our assignment of CHECKSUM_UNNECESSARY into
+efx_rx_packet_gro().
+
+Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/net/sfc/rx.c |    4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+--- a/drivers/net/sfc/rx.c
++++ b/drivers/net/sfc/rx.c
+@@ -155,11 +155,10 @@ static int efx_init_rx_buffers_skb(struc
+               if (unlikely(!skb))
+                       return -ENOMEM;
+-              /* Adjust the SKB for padding and checksum */
++              /* Adjust the SKB for padding */
+               skb_reserve(skb, NET_IP_ALIGN);
+               rx_buf->len = skb_len - NET_IP_ALIGN;
+               rx_buf->is_page = false;
+-              skb->ip_summed = CHECKSUM_UNNECESSARY;
+               rx_buf->dma_addr = pci_map_single(efx->pci_dev,
+                                                 skb->data, rx_buf->len,
+@@ -498,6 +497,7 @@ static void efx_rx_packet_gro(struct efx
+               EFX_BUG_ON_PARANOID(!checksummed);
+               rx_buf->u.skb = NULL;
++              skb->ip_summed = CHECKSUM_UNNECESSARY;
+               gro_result = napi_gro_receive(napi, skb);
+       }