From mboxrd@z Thu Jan 1 00:00:00 1970 From: David Miller Subject: Re: [PATCH v2,net-next 1/2] ip_gre: fix parsing gre header in ipgre_err Date: Thu, 13 Sep 2018 10:58:40 -0700 (PDT) Message-ID: <20180913.105840.140151724801067072.davem@davemloft.net> References: <1536744082-3568-1-git-send-email-yanhaishuang@cmss.chinamobile.com> Mime-Version: 1.0 Content-Type: Text/Plain; charset=us-ascii Content-Transfer-Encoding: 7bit Cc: kuznet@ms2.inr.ac.ru, jbenc@redhat.com, netdev@vger.kernel.org, linux-kernel@vger.kernel.org To: yanhaishuang@cmss.chinamobile.com Return-path: In-Reply-To: <1536744082-3568-1-git-send-email-yanhaishuang@cmss.chinamobile.com> Sender: linux-kernel-owner@vger.kernel.org List-Id: netdev.vger.kernel.org From: Haishuang Yan Date: Wed, 12 Sep 2018 17:21:21 +0800 > @@ -86,7 +86,7 @@ int gre_parse_header(struct sk_buff *skb, struct tnl_ptk_info *tpi, > > options = (__be32 *)(greh + 1); > if (greh->flags & GRE_CSUM) { > - if (skb_checksum_simple_validate(skb)) { > + if (csum_err && skb_checksum_simple_validate(skb)) { > *csum_err = true; > return -EINVAL; > } You want to ignore csum errors, but you do not want to elide the side effects of the skb_checksum_simple_validate() call which are to set skb->csum_valid and skb->csum. Therefore, the skb_checksum_simple_validate() call still needs to be performed. We just wont return -EINVAL in the NULL csum_err case.