netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Vlad Yasevich <vyasevich@gmail.com>
To: Eric Dumazet <eric.dumazet@gmail.com>
Cc: Wolfgang Walter <linux@stwm.de>,
	Cong Wang <xiyou.wangcong@gmail.com>,
	LKML <linux-kernel@vger.kernel.org>,
	Hannes Frederic Sowa <hannes@stressinduktion.org>,
	Linux Kernel Network Developers <netdev@vger.kernel.org>
Subject: Re: kernel >= 4.0: crashes when using traceroute6 with isatap
Date: Tue, 12 May 2015 16:46:31 -0400	[thread overview]
Message-ID: <555266A7.8060706@gmail.com> (raw)
In-Reply-To: <1431462991.566.97.camel@edumazet-glaptop2.roam.corp.google.com>

On 05/12/2015 04:36 PM, Eric Dumazet wrote:
> On Tue, 2015-05-12 at 16:18 -0400, Vlad Yasevich wrote:
>> On 05/06/2015 06:11 PM, Wolfgang Walter wrote:
>>> Am Mittwoch, 6. Mai 2015, 11:15:18 schrieben Sie:
>>>> (Cc'ing netdev.)
>>>>
>>>> On Sat, May 2, 2015 at 5:29 AM, Wolfgang Walter <linux@stwm.de> wrote:
>>>>> Am Samstag, 2. Mai 2015, 02:16:36 schrieb Wolfgang Walter:
>>>>>> Hello,
>>>>>>
>>>>>> kernel 4.0 (and 4.0.1) crashes immediately when I use traceroute6 with an
>>>>>> isatap-tunnel.
>>>>>
>>>>> I did some further tests. To trigger the crash you need
>>>>>
>>>>> * isatap-tunnel (probably any sit-tunnel will do it)
>>>>> * raw-socket
>>>>> * udp
>>>>>
>>>>> Using icmpv6 or tcp i.e. does not trigger it.
>>>>
>>>> Do you have a script to reproduce it?
>>>>
>>>>
>>>> Thanks for the bug report!
>>>
>>> You need a isatap-server with say ipv4-address $X
>>>
>>> Then, on host with 4.0, start isatapd: isatapd --mtu 1280 $X
>>>
>>> then do
>>>
>>> 	traceroute6 www.google.de
>>>
>>> Regards,
>>>
>>
>> Hi Walter
>>
>> Could you try this patch.  Looks like raw passes transhdrlen
>> of 0 on the first packet and that makes IPv4 behave correctly,
>> but not IPv6.
>>
>>
>> diff --git a/net/ipv6/ip6_output.c b/net/ipv6/ip6_output.c
>> index 7fde1f2..fd9c079 100644
>> --- a/net/ipv6/ip6_output.c
>> +++ b/net/ipv6/ip6_output.c
>> @@ -1278,7 +1278,7 @@ emsgsize:
>>  	/* If this is the first and only packet and device
>>  	 * supports checksum offloading, let's use it.
>>  	 */
>> -	if (!skb && sk->sk_protocol == IPPROTO_UDP &&
>> +	if (transhdrlen && sk->sk_protocol == IPPROTO_UDP &&
>>  	    length + fragheaderlen < mtu &&
>>  	    rt->dst.dev->features & NETIF_F_V6_CSUM &&
>>  	    !exthdrlen)
> 
> And make sure the checksum is correct ;)
> 
> Vlad, can you tell where skb->cum_start and skb->csum_offset are set ?
> 
> 

For udp, udp6_hwcsum_outgoing(), but with the above patch, the check above will return
false, and we'll fallback to using CHECKSUM_NONE.

Before, the !skb was true since there there was no skb on the queue.  Now, that
we are checking transhdr and raw passing in 0, the check will be false.  This
is what's making IPv4 work correctly in this case.

-vlad

  reply	other threads:[~2015-05-12 20:46 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <1770409.aMESoOv08f@h2o.as.studentenwerk.mhn.de>
     [not found] ` <1958390.Ugr57PpLDS@h2o.as.studentenwerk.mhn.de>
2015-05-06 18:15   ` kernel >= 4.0: crashes when using traceroute6 with isatap Cong Wang
2015-05-06 19:10     ` Eric Dumazet
2015-05-06 22:04       ` Wolfgang Walter
2015-05-06 22:42         ` Eric Dumazet
2015-05-07  0:04           ` Wolfgang Walter
2015-05-12 16:34           ` Vlad Yasevich
2015-05-06 22:11     ` Wolfgang Walter
2015-05-12 20:18       ` Vlad Yasevich
2015-05-12 20:36         ` Eric Dumazet
2015-05-12 20:46           ` Vlad Yasevich [this message]
2015-05-14  0:32         ` Wolfgang Walter
     [not found] ` <1431002384.22756.0.camel@edumazet-glaptop2.roam.corp.google.com>
     [not found]   ` <12346713.ZyFExCo3ux@h2o.as.studentenwerk.mhn.de>
     [not found]     ` <2088438.42IY8hjjd5@h2o.as.studentenwerk.mhn.de>
     [not found]       ` <1431122268.22756.41.camel@edumazet-glaptop2.roam.corp.google.com>
2015-05-08 22:22         ` [PATCH net] Revert "ipv6: Allow for partial checksums on non-ufo packets" Eric Dumazet
2015-05-10 23:53           ` David Miller
2015-05-12 18:05           ` Vlad Yasevich
2015-05-12 19:07             ` Eric Dumazet
2015-05-06 18:14 kernel >= 4.0: crashes when using traceroute6 with isatap Cong Wang

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=555266A7.8060706@gmail.com \
    --to=vyasevich@gmail.com \
    --cc=eric.dumazet@gmail.com \
    --cc=hannes@stressinduktion.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux@stwm.de \
    --cc=netdev@vger.kernel.org \
    --cc=xiyou.wangcong@gmail.com \
    /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;
as well as URLs for NNTP newsgroup(s).