From: Greg Kroah-Hartman Date: Thu, 15 Mar 2012 23:44:39 +0000 (-0700) Subject: 3.0-stable patches X-Git-Tag: v3.0.25~5 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=57dd3871c15098cade639dde389745ed2f9461a7;p=thirdparty%2Fkernel%2Fstable-queue.git 3.0-stable patches added patches: sfc-fix-assignment-of-ip_summed-for-pre-allocated-skbs.patch --- diff --git a/queue-3.0/series b/queue-3.0/series index b0c6bee12d0..c96ce7782b8 100644 --- a/queue-3.0/series +++ b/queue-3.0/series @@ -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 index 00000000000..a62b6d569fd --- /dev/null +++ b/queue-3.0/sfc-fix-assignment-of-ip_summed-for-pre-allocated-skbs.patch @@ -0,0 +1,51 @@ +From 2bf745f12af273bdff17ad422c1605cdee754d93 Mon Sep 17 00:00:00 2001 +From: Ben Hutchings +Date: Sat, 25 Feb 2012 00:03:10 +0000 +Subject: sfc: Fix assignment of ip_summed for pre-allocated skbs + +From: Ben Hutchings + +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 +Signed-off-by: Greg Kroah-Hartman +--- + 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); + }