Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753875AbbELUqf (ORCPT ); Tue, 12 May 2015 16:46:35 -0400 Received: from mail-qk0-f176.google.com ([209.85.220.176]:34769 "EHLO mail-qk0-f176.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753798AbbELUqe (ORCPT ); Tue, 12 May 2015 16:46:34 -0400 Message-ID: <555266A7.8060706@gmail.com> Date: Tue, 12 May 2015 16:46:31 -0400 From: Vlad Yasevich User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.6.0 MIME-Version: 1.0 To: Eric Dumazet CC: Wolfgang Walter , Cong Wang , LKML , Hannes Frederic Sowa , Linux Kernel Network Developers Subject: Re: kernel >= 4.0: crashes when using traceroute6 with isatap References: <1770409.aMESoOv08f@h2o.as.studentenwerk.mhn.de> <1958390.Ugr57PpLDS@h2o.as.studentenwerk.mhn.de> <1489362.AtetvSCXN1@h2o.as.studentenwerk.mhn.de> <5552602E.3060300@gmail.com> <1431462991.566.97.camel@edumazet-glaptop2.roam.corp.google.com> In-Reply-To: <1431462991.566.97.camel@edumazet-glaptop2.roam.corp.google.com> Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2442 Lines: 78 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 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 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/