On Tue, Apr 25, 2017 at 7:04 AM, Cong Wang <xiyou.wangc...@gmail.com> wrote: > On Mon, Apr 24, 2017 at 9:47 AM, Cong Wang <xiyou.wangc...@gmail.com> wrote: >> >> We use ipv4 dst in ip6_tunnel and cast an IPv4 neigh key as an >> IPv6 address... >> >> >> neigh = dst_neigh_lookup(skb_dst(skb), >> &ipv6_hdr(skb)->daddr); >> if (!neigh) >> goto tx_err_link_failure; >> >> addr6 = (struct in6_addr *)&neigh->primary_key; // <=== HERE >> addr_type = ipv6_addr_type(addr6); >> >> if (addr_type == IPV6_ADDR_ANY) >> addr6 = &ipv6_hdr(skb)->daddr; >> >> memcpy(&fl6->daddr, addr6, sizeof(fl6->daddr)); >> >> Also the network header of the skb at this point should be still IPv4? > > Please try the attached patch.
I don't see these crashes with your patch. Thanks! Tested-by: Andrey Konovalov <andreyk...@google.com> > > I am not sure how we could handle 4in6 case better than just relying on > the config of ip6 tunnel.