public inbox for kernel-testers@vger.kernel.org
 help / color / mirror / Atom feed
From: Eric Dumazet <eric.dumazet@gmail.com>
To: Jarek Poplawski <jarkao2@gmail.com>,
	Plamen Petrov <pvp-lsts@fs.uni-ruse.bg>,
	Herbert Xu <herbert@gondor.apana.org.au>
Cc: "Rafael J. Wysocki" <rjw@sisk.pl>,
	Kernel Testers List <kernel-testers@vger.kernel.org>,
	Maciej Rutecki <maciej.rutecki@gmail.com>,
	"David S. Miller" <davem@davemloft.net>,
	Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
	netdev@vger.kernel.org
Subject: Re: [Bug #16626] Machine hangs with EIP at skb_copy_and_csum_dev
Date: Wed, 01 Sep 2010 12:50:51 +0200	[thread overview]
Message-ID: <1283338251.2556.124.camel@edumazet-laptop> (raw)
In-Reply-To: <20100831192659.GA3093@del.dom.local>

Plamen, could you test following patch ?

I reproduced problem on a dev machine and following patch cured it.

Thanks

[PATCH] gro: fix different skb headrooms

packets entering GRO might have different headrooms, even for a given
flow (because of implementation details in drivers, like copybreak).
We cant force drivers to deliver packets with a fixed headroom.

1) fix skb_segment()

skb_segment() makes the false assumption headrooms of fragments are same
than the head. When CHECKSUM_PARTIAL is used, this can give csum_start
errors, and crash later in skb_copy_and_csum_dev()

2) allocate a minimal skb for head of frag_list

skb_gro_receive() uses netdev_alloc_skb(headroom + skb_gro_offset(p)) to
allocate a fresh skb. This adds NET_SKB_PAD to a padding already
provided by netdevice, depending on various things, like copybreak.

Use alloc_skb() to allocate an exact padding, to reduce cache line
needs:
NET_SKB_PAD + NET_IP_ALIGN

bugzilla : https://bugzilla.kernel.org/show_bug.cgi?id=16626

Many thanks to Plamen Petrov, testing many debugging patches !
With help of Jarek Poplawski.

Reported-by: Plamen Petrov <pvp-lsts@fs.uni-ruse.bg>
Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com>
CC: Jarek Poplawski <jarkao2@gmail.com>
---
patch against linux-2.6 current tree

 net/core/skbuff.c |    8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/net/core/skbuff.c b/net/core/skbuff.c
index 3a2513f..26396ff 100644
--- a/net/core/skbuff.c
+++ b/net/core/skbuff.c
@@ -2573,6 +2573,10 @@ struct sk_buff *skb_segment(struct sk_buff *skb, int features)
 		__copy_skb_header(nskb, skb);
 		nskb->mac_len = skb->mac_len;
 
+		/* nskb and skb might have different headroom */
+		if (nskb->ip_summed == CHECKSUM_PARTIAL)
+			nskb->csum_start += skb_headroom(nskb) - headroom;
+
 		skb_reset_mac_header(nskb);
 		skb_set_network_header(nskb, skb->mac_len);
 		nskb->transport_header = (nskb->network_header +
@@ -2702,8 +2706,8 @@ int skb_gro_receive(struct sk_buff **head, struct sk_buff *skb)
 	} else if (skb_gro_len(p) != pinfo->gso_size)
 		return -E2BIG;
 
-	headroom = skb_headroom(p);
-	nskb = netdev_alloc_skb(p->dev, headroom + skb_gro_offset(p));
+	headroom = NET_SKB_PAD + NET_IP_ALIGN;
+	nskb = alloc_skb(headroom + skb_gro_offset(p), GFP_ATOMIC);
 	if (unlikely(!nskb))
 		return -ENOMEM;
 



  reply	other threads:[~2010-09-01 10:50 UTC|newest]

Thread overview: 53+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-08-29 22:24 2.6.36-rc3: Reported regressions from 2.6.35 Rafael J. Wysocki
2010-08-29 22:24 ` [Bug #16626] Machine hangs with EIP at skb_copy_and_csum_dev Rafael J. Wysocki
     [not found]   ` <courier.4C7C99F2.00001F74@fs.ru.acad.bg>
     [not found]     ` <courier.4C7C99F2.00001F74-Xdw7EbNJKi3354cJYj5R/Q@public.gmane.org>
2010-08-31 19:26       ` Jarek Poplawski
2010-09-01 10:50         ` Eric Dumazet [this message]
2010-09-01 11:20           ` Jarek Poplawski
     [not found]             ` <20100901112026.GA9468-8HppEYmqbBCE+EvaaNYduQ@public.gmane.org>
2010-09-01 13:57               ` Eric Dumazet
2010-09-01 15:05                 ` Jarek Poplawski
2010-09-02  1:23           ` David Miller
2010-09-03  8:00           ` Plamen Petrov
2010-09-03  9:06             ` Jarek Poplawski
2010-09-03  8:30           ` Herbert Xu
2010-09-04 20:34           ` Jarek Poplawski
     [not found]             ` <20100904203429.GA4891-qLhEM4ewh5CNj9Bq2fkWzw@public.gmane.org>
2010-09-05  7:49               ` Eric Dumazet
2010-09-08  4:57                 ` Plamen Petrov
2010-09-08  6:20                   ` Jarek Poplawski
2010-09-08 17:32                     ` David Miller
     [not found]                       ` <20100908.103256.112592448.davem-fT/PcQaiUtIeIZ0/mPfg9Q@public.gmane.org>
2010-09-08 20:21                         ` Rafael J. Wysocki
     [not found]                           ` <201009082221.16356.rjw-KKrjLPT3xs0@public.gmane.org>
2010-09-12  6:55                             ` Plamen Petrov
     [not found]                               ` <4C8C7957.7080207-s6OjJRe3oxUfI6EYonfoRA@public.gmane.org>
2010-09-12 15:55                                 ` David Miller
     [not found]                                   ` <20100912.085509.193705327.davem-fT/PcQaiUtIeIZ0/mPfg9Q@public.gmane.org>
2010-09-13  6:49                                     ` Plamen Petrov
2010-09-12 17:28                                 ` Rafael J. Wysocki
2018-08-29 21:39         ` Mitchell Erblich
2010-08-29 22:36 ` [Bug #16881] [REGRESSION, Radeon-KMS] 2.6.36-rc1,2 - missing textures in 0 A.D Rafael J. Wysocki
2010-08-30  9:54   ` trapDoor
     [not found]     ` <AANLkTikpoH-_od-SL3=Q7a=xbsraE4rYGicx7mmS92Cw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2010-08-30 13:39       ` Florian Mickler
     [not found]         ` <20100830153953.1e5abc71-mGsOIKOveelVRbCss4o9kg@public.gmane.org>
2010-08-30 14:45           ` trapDoor
2010-08-29 22:36 ` [Bug #17021] [REGRESSION] [2.6.36-rc1] [DRM INTEL] [drm:intel_calculate_wm] *ERROR* Insufficient FIFO for plane, expect flickering: entries required = 36, available = 28 Rafael J. Wysocki
2010-08-29 22:36 ` [Bug #16951] hackbench regression with 2.6.36-rc1 Rafael J. Wysocki
2010-08-29 22:36 ` [Bug #16971] qla4xxx compile failure on 32-bit PowerPC: missing readq and writeq Rafael J. Wysocki
2010-08-30  8:45   ` Meelis Roos
     [not found]     ` <alpine.SOC.1.00.1008301145230.29117-ptEonEWSGqKptlylMvRsHA@public.gmane.org>
2010-08-30 13:46       ` Florian Mickler
2010-08-29 22:36 ` [Bug #16629] fix BUG: using smp_processor_id() in preemptible code (resend) Rafael J. Wysocki
2010-08-29 22:36 ` [Bug #16961] kernel BUG at arch/x86/kvm/../../../virt/kvm/kvm_main.c:1978 Rafael J. Wysocki
2010-08-30  8:55   ` Sergey Senozhatsky
     [not found]     ` <20100830085539.GA5244-dY8u8AhHFaWtd10JCjopabkcH5ONE+aC@public.gmane.org>
2010-08-30 13:44       ` Florian Mickler
2010-08-30 17:38       ` Rafael J. Wysocki
2010-08-29 22:36 ` [Bug #17151] i915: 2.6.36-rc2 hoses my Intel display Rafael J. Wysocki
2010-08-30 18:59   ` Jonathan Corbet
     [not found]     ` <20100830125941.6549eb4d-X4aBRu1Q+avR7s880joybQ@public.gmane.org>
2010-08-30 20:42       ` Rafael J. Wysocki
2010-08-29 22:36 ` [Bug #17131] WARN with 3c905 boomerang NIC Rafael J. Wysocki
2010-09-06  5:50   ` Florian Mickler
     [not found]     ` <20100906075007.5797f524-mGsOIKOveelVRbCss4o9kg@public.gmane.org>
2010-09-06 10:30       ` Doug Nazar
     [not found]         ` <4C84C2CE.4080905-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2010-09-06 11:00           ` Florian Mickler
2010-08-29 22:36 ` [Bug #17041] 2.6.36-rc1 hangs during XFS barrier test for / Rafael J. Wysocki
2010-08-30  4:36   ` Torsten Kaiser
     [not found]     ` <AANLkTikzDgHsPsUQMdb87R8dG61CBBekxBfhbuguLEPX-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2010-08-30  9:27       ` Florian Mickler
2010-08-30 17:40     ` Rafael J. Wysocki
2010-08-29 22:36 ` [Bug #17061] 2.6.36-rc1 on zaurus: bluetooth regression Rafael J. Wysocki
2010-08-29 22:36 ` [Bug #17301] i915: 2.6.36-rc2 wrong resolution on gdm start Rafael J. Wysocki
2010-08-29 22:36 ` [Bug #17321] i386 WARNING: at kernel/softirq.c:143 _local_bh_enable_ip+0x2f/0x7e Rafael J. Wysocki
2010-08-29 22:36 ` [Bug #17311] 2.6.36-rc2-git4 - INFO: possible circular locking dependency detected Rafael J. Wysocki
2010-08-29 22:36 ` [Bug #17341] kdump regression compared to v2.6.35 Rafael J. Wysocki
2010-08-29 22:36 ` [Bug #17331] BUG: scheduling while atomic Rafael J. Wysocki

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1283338251.2556.124.camel@edumazet-laptop \
    --to=eric.dumazet@gmail.com \
    --cc=davem@davemloft.net \
    --cc=herbert@gondor.apana.org.au \
    --cc=jarkao2@gmail.com \
    --cc=kernel-testers@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=maciej.rutecki@gmail.com \
    --cc=netdev@vger.kernel.org \
    --cc=pvp-lsts@fs.uni-ruse.bg \
    --cc=rjw@sisk.pl \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox