From: Xin Long <lucien....@gmail.com> Date: Fri, 15 Sep 2017 12:00:07 +0800
> Now in ip6gre_header before packing the ipv6 header, it skb_push t->hlen > which only includes encap_hlen + tun_hlen. It means greh and inner header > would be over written by ipv6 stuff and ipv6h might have no chance to set > up. > > Jianlin found this issue when using remote any on ip6_gre, the packets he > captured on gre dev are truncated: > > 22:50:26.210866 Out ethertype IPv6 (0x86dd), length 120: truncated-ip6 -\ > 8128 bytes missing!(flowlabel 0x92f40, hlim 0, next-header Options (0) \ > payload length: 8192) ::1:2000:0 > ::1:0:86dd: HBH [trunc] ip-proto-128 \ > 8184 > > It should also skb_push ipv6hdr so that ipv6h points to the right position > to set ipv6 stuff up. > > This patch is to skb_push hlen + sizeof(*ipv6h) and also fix some indents > in ip6gre_header. > > Fixes: c12b395a4664 ("gre: Support GRE over IPv6") > Reported-by: Jianlin Shi <ji...@redhat.com> > Signed-off-by: Xin Long <lucien....@gmail.com> Yes, this is consistent with how t->hlen is used in the rest of this tunnel driver. Applied and queued up for -stable, thanks!