From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jiri Benc Subject: Re: [PATCH] ip6_gre: simplify gre header parsing in ip6gre_err Date: Mon, 10 Sep 2018 17:36:40 +0200 Message-ID: <20180910173640.117bf42f@redhat.com> References: <1536567909-25089-1-git-send-email-yanhaishuang@cmss.chinamobile.com> Mime-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Cc: "David S. Miller" , Alexey Kuznetsov , netdev@vger.kernel.org, linux-kernel@vger.kernel.org To: Haishuang Yan Return-path: In-Reply-To: <1536567909-25089-1-git-send-email-yanhaishuang@cmss.chinamobile.com> Sender: linux-kernel-owner@vger.kernel.org List-Id: netdev.vger.kernel.org On Mon, 10 Sep 2018 16:25:09 +0800, Haishuang Yan wrote: > + if (gre_parse_header(skb, &tpi, &csum_err, htons(ETH_P_IPV6), > + offset) < 0) { > + if (!csum_err) /* ignore csum errors. */ > + return; > } gre_parse_header stops parsing when csum_err is encountered. Which means tpi.key is undefined... > > - if (!pskb_may_pull(skb, offset + grehlen)) > - return; > ipv6h = (const struct ipv6hdr *)skb->data; > - greh = (const struct gre_base_hdr *)(skb->data + offset); > - key = key_off ? *(__be32 *)(skb->data + key_off) : 0; > - > t = ip6gre_tunnel_lookup(skb->dev, &ipv6h->daddr, &ipv6h->saddr, > - key, greh->protocol); > + tpi.key, tpi.proto); ...and can't be used here. Jiri