From patchwork Mon Sep 8 05:26:25 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tom Herbert X-Patchwork-Id: 386783 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id C7B981400B6 for ; Mon, 8 Sep 2014 15:27:08 +1000 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752170AbaIHF1D (ORCPT ); Mon, 8 Sep 2014 01:27:03 -0400 Received: from mail-pa0-f47.google.com ([209.85.220.47]:38095 "EHLO mail-pa0-f47.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751781AbaIHF1C (ORCPT ); Mon, 8 Sep 2014 01:27:02 -0400 Received: by mail-pa0-f47.google.com with SMTP id ey11so3985185pad.34 for ; Sun, 07 Sep 2014 22:27:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=from:to:subject:date:message-id:in-reply-to:references; bh=0aeWyMzeJUoViAHl1i5WaJsaFyKG0Jw9VeRVP8vBqmo=; b=g7On0dPXPAnJOYd7Yxqm+OSFZ4u7nnfYXWY1gRjphyU7QjsvbENUK7f6B+6514Cv4g a5vS1ji/rPOZ4OheAb3AK9x28brhM2w5aDWDPuZvhFntExEGVkCSsNC/oarulA5XcvPv rlOnCO4rnfX8Bip5BYI9KBsLxHGMPDHAyBauAPuaGqoTqTmUF/yXP15yNVhME27BU9jN oeQeTNnL7hjS2p/okrLlEW5FxPqid3Z+R9TmyFss6bfH0qvFEgeZJ7313tH7xY80Q+S6 v9Cc95w/yDFUMHRGB7rWONAwglZFMGJNypXP9T5POJkrIw73BWNrC8J7DUFO8835WOuy S3EA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references; bh=0aeWyMzeJUoViAHl1i5WaJsaFyKG0Jw9VeRVP8vBqmo=; b=BjZyAZZ80JMn4PqlpAQSSWxYqfQlMX85NAZhufJD+m3GPDa+5fye9OkRHQpWCv5mwN /z05C7LIElg27ZafCiagdqTbFxMrQtjfBusQyuZkuVmQbj47rG618VM/FJ3TZrISUpa+ 33jSke7DcPJGlsZkAMHGEiZcyS/COYuCyHOLakDaMuSTR6e5L0sbngIHk9gmfTY2vKdf juJK1ibfdrHnRAYAH4Jk/NlYFhu1EVALoIP7LzVDKfzDnK5JrKJoM4UF/PjHqnKFMoEl MB+bB53/ylnTibMKsdJMOJVD2pJRJMf9n/H3aImRmoNPwHmCkvYxRWorvn+G7rYhNrM6 Bm0Q== X-Gm-Message-State: ALoCoQmpE9G3VcKj/55tB8BSYufJbdQiOohfDUdJ79n98jnPTLfr1kRPKMSADTgpsVODdYBkA7K2 X-Received: by 10.68.177.68 with SMTP id co4mr16975679pbc.93.1410154021637; Sun, 07 Sep 2014 22:27:01 -0700 (PDT) Received: from tomh.mtv.corp.google.com (tomh.mtv.corp.google.com [172.18.117.126]) by mx.google.com with ESMTPSA id y9sm8286971pas.23.2014.09.07.22.27.00 for (version=TLSv1.1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Sun, 07 Sep 2014 22:27:00 -0700 (PDT) From: Tom Herbert To: davem@davemloft.net, netdev@vger.kernel.org Subject: [PATCH net-next 1/5] net: Fix GRE RX to use skb_transport_header for GRE header offset Date: Sun, 7 Sep 2014 22:26:25 -0700 Message-Id: <1410153989-23837-2-git-send-email-therbert@google.com> X-Mailer: git-send-email 2.1.0.rc2.206.gedb03e5 In-Reply-To: <1410153989-23837-1-git-send-email-therbert@google.com> References: <1410153989-23837-1-git-send-email-therbert@google.com> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org GRE assumes that the GRE header is at skb_network_header + ip_hrdlen(skb). It is more general to use skb_transport_header and this allows the possbility of inserting additional header between IP and GRE (which is what we will done in Generic UDP Encapsulation for GRE). Signed-off-by: Tom Herbert Acked-by: Eric Dumazet --- net/ipv4/gre_demux.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/net/ipv4/gre_demux.c b/net/ipv4/gre_demux.c index 7e0756d..4a7b5b2 100644 --- a/net/ipv4/gre_demux.c +++ b/net/ipv4/gre_demux.c @@ -98,7 +98,6 @@ EXPORT_SYMBOL_GPL(gre_build_header); static int parse_gre_header(struct sk_buff *skb, struct tnl_ptk_info *tpi, bool *csum_err) { - unsigned int ip_hlen = ip_hdrlen(skb); const struct gre_base_hdr *greh; __be32 *options; int hdr_len; @@ -106,7 +105,7 @@ static int parse_gre_header(struct sk_buff *skb, struct tnl_ptk_info *tpi, if (unlikely(!pskb_may_pull(skb, sizeof(struct gre_base_hdr)))) return -EINVAL; - greh = (struct gre_base_hdr *)(skb_network_header(skb) + ip_hlen); + greh = (struct gre_base_hdr *)skb_transport_header(skb); if (unlikely(greh->flags & (GRE_VERSION | GRE_ROUTING))) return -EINVAL; @@ -116,7 +115,7 @@ static int parse_gre_header(struct sk_buff *skb, struct tnl_ptk_info *tpi, if (!pskb_may_pull(skb, hdr_len)) return -EINVAL; - greh = (struct gre_base_hdr *)(skb_network_header(skb) + ip_hlen); + greh = (struct gre_base_hdr *)skb_transport_header(skb); tpi->proto = greh->protocol; options = (__be32 *)(greh + 1);