From patchwork Fri Dec 15 22:27:43 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: William Tu X-Patchwork-Id: 849400 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="OYAJLqhK"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3yz4nt1hJCz9sNw for ; Sat, 16 Dec 2017 09:28:18 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932799AbdLOW2Q (ORCPT ); Fri, 15 Dec 2017 17:28:16 -0500 Received: from mail-pf0-f193.google.com ([209.85.192.193]:44693 "EHLO mail-pf0-f193.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1757098AbdLOW14 (ORCPT ); Fri, 15 Dec 2017 17:27:56 -0500 Received: by mail-pf0-f193.google.com with SMTP id m26so7091102pfj.11 for ; Fri, 15 Dec 2017 14:27:56 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=oEUTPf3qYtZ2tXz+4O0GgO1jOd2cL7DhsoC2lwHTiAs=; b=OYAJLqhKn52PLtRL5W86qJnb6AA3nMEmS0QF43/KB8O5dQBVyJESW8XMmSqd8g9Q5F pqeISGirpDGvpOkW/NzgzWdiLX1CjXpFN+QYfjYbkDdNMUAWanNgyNylxd8zqYzXTIaN nPvQmJkrROMXgvVYwyFKbIvpelAP6IjCPJAZr4y+2UCWNi0kdxDsgcgGFY1RVWNrAEmE D9aOIgpbjxuhZUpGwRCuDOedKIdNx7jCAB+CZCnTtZjKCIL7saWJvhbBFZISacUGDd+w 4BJca1IL4D5XBhjVj0d5IV1PHY6c92AEEIhRDZKV52jOTibXHVEOm+n/6ZZNfdHqPqLZ BNng== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=oEUTPf3qYtZ2tXz+4O0GgO1jOd2cL7DhsoC2lwHTiAs=; b=A3uMoVh9MHPTzEXvgu3t1Gw1kvKvKPc4h/n9oduzPN4l6FoEaqLn/Zc+CYygG+FUQV 4K1IH7iygwIcwfaxCkx9e0rGsXNL26L4xgRlV0xXLgC4oodBgbShZyTo7ZkuGxTur+nL LhcAFKX8nrYK3Z9n5W8JGHmCMEP38+4q6OJ4p+NswzJDo3KdIRbqjBFg4P9hqbWl8/uv uRY7TEatBHR0CS8LJGhNe4jMoja90Ej67ygR3Ev/24NOnlp87XVmxC+JIW3qwvz7/DzU k7ejeSrWx387KFxuqEjOl3eEAU3I1v24rxay8jNLaCHPuwbL57Dn0Dh4FHJjWbU9kmFU okmQ== X-Gm-Message-State: AKGB3mJAvX+plQ6wrX73icF7ZCfORJ2el2VwlbZiUsEVFOoYor0FpzLH JUqeNQhqOhYckXtBHxxRQ0fZWRor X-Google-Smtp-Source: ACJfBovnW3ey7i54t2+VKWEmza54ExgpZf09TqX8gu9oaTpzh4PpRTmvI9KssGlghSOpghlWcbzSrQ== X-Received: by 10.101.98.150 with SMTP id f22mr9480753pgv.180.1513376875243; Fri, 15 Dec 2017 14:27:55 -0800 (PST) Received: from sc9-mailhost3.vmware.com ([24.5.191.4]) by smtp.gmail.com with ESMTPSA id o84sm16386093pfa.46.2017.12.15.14.27.54 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Fri, 15 Dec 2017 14:27:54 -0800 (PST) From: William Tu To: netdev@vger.kernel.org Cc: Haishuang Yan Subject: [PATCH net-next 1/2] net: erspan: fix wrong return value Date: Fri, 15 Dec 2017 14:27:43 -0800 Message-Id: <1513376864-33777-2-git-send-email-u9012063@gmail.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1513376864-33777-1-git-send-email-u9012063@gmail.com> References: <1513376864-33777-1-git-send-email-u9012063@gmail.com> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org If pskb_may_pull return failed, return PACKET_REJECT instead of -ENOMEM. Fixes: 94d7d8f29287 ("ip6_gre: add erspan v2 support") Fixes: f551c91de262 ("net: erspan: introduce erspan v2 for ip_gre") Signed-off-by: William Tu Cc: Haishuang Yan Acked-by: Haishuang Yan --- net/ipv4/ip_gre.c | 2 +- net/ipv6/ip6_gre.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/net/ipv4/ip_gre.c b/net/ipv4/ip_gre.c index 004800b923c6..1ca7451ff898 100644 --- a/net/ipv4/ip_gre.c +++ b/net/ipv4/ip_gre.c @@ -287,7 +287,7 @@ static int erspan_rcv(struct sk_buff *skb, struct tnl_ptk_info *tpi, if (tunnel) { len = gre_hdr_len + erspan_hdr_len(ver); if (unlikely(!pskb_may_pull(skb, len))) - return -ENOMEM; + return PACKET_REJECT; if (__iptunnel_pull_header(skb, len, diff --git a/net/ipv6/ip6_gre.c b/net/ipv6/ip6_gre.c index 5c9c65f1d5c2..b3e4e0384f36 100644 --- a/net/ipv6/ip6_gre.c +++ b/net/ipv6/ip6_gre.c @@ -524,7 +524,7 @@ static int ip6erspan_rcv(struct sk_buff *skb, int gre_hdr_len, int len = erspan_hdr_len(ver); if (unlikely(!pskb_may_pull(skb, len))) - return -ENOMEM; + return PACKET_REJECT; if (__iptunnel_pull_header(skb, len, htons(ETH_P_TEB), From patchwork Fri Dec 15 22:27:44 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: William Tu X-Patchwork-Id: 849399 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="gDRyY95q"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3yz4ns3LHCz9sCZ for ; Sat, 16 Dec 2017 09:28:17 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932241AbdLOW2O (ORCPT ); Fri, 15 Dec 2017 17:28:14 -0500 Received: from mail-pg0-f66.google.com ([74.125.83.66]:36578 "EHLO mail-pg0-f66.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1757108AbdLOW14 (ORCPT ); Fri, 15 Dec 2017 17:27:56 -0500 Received: by mail-pg0-f66.google.com with SMTP id k134so6701921pga.3 for ; Fri, 15 Dec 2017 14:27:56 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=/Zx+68Y0HlXwQNUEmG3wKzl05oiNBIV3sWZwv/FFXAI=; b=gDRyY95qhqCN1XpAfbaNMPPjzwQVPkWn0/l5acwoIHFwsZAEtw5u8AdRA7GZOnTyqj JofIfkjRzZUgJa4kMqpxgznAJ1AkZ7Aa8Mk5GLEpeVLwcxbJh7RR0vSA7Sau1x9FrayE QrTLgARhNasd8we+COrNSBeq0bRH0aZYFM4kuWk/XJjueU4HAZv8VN5E1p3vKs/WWZsS VDGbHxBtR3JH1AuCgyRKeym+jMq1E3r+uxEEMrOb8XoBK/ft81cXBdYBwXPwe712khdn FftjaDecWhB69ABvp2PUClpIxce95hzqXt4Y+AWcT8lAd6foyhkvEvS4YESTd0SAhRau mztQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=/Zx+68Y0HlXwQNUEmG3wKzl05oiNBIV3sWZwv/FFXAI=; b=XDw2TPOL89issh7zzTd8tkwcn7vx2vmf8ioDqYkwteWBOkXa1e6AE+5scoYN/JtGlu awRUHQOX76doeZL5JFwOnfSePB1ZPAAP57KGFP2Q7BI8zZ7/jfqvH+l0UOFQEvPRVt6a 2aLHtkyTshJIDLr7wMjl421nemfvh3Opfn2LizPlOrOm5pVs8PkpYx3MbJMhloyMh87a befO6+BgB+nCLEtjDQHOnUtLGEWefOYG58d7JoRdQ+CHnM3zdEECVKbD5kxka/6brXIO 5/5NYuj2W4mdCaTO7UendpjjcjMCdG+ykM/Y8NBkHyhaqsXbQnYGsin4kP537lShVWsk WBUA== X-Gm-Message-State: AKGB3mJS5C3lEbsG9NJN4yfFIkivqLJrP10BbUUJc4uNG3oi/x26sfD2 oJjKdTiUELx4fQiJnuOgmFWnv/OY X-Google-Smtp-Source: ACJfBouMpgNJIHGfsgbfq5CAx5KIUBa3tN+QfDZRcJRwFTcZ5LYwReTwnmWm86rcCRLIjF3UGVMRoQ== X-Received: by 10.101.102.66 with SMTP id z2mr13463991pgv.352.1513376876261; Fri, 15 Dec 2017 14:27:56 -0800 (PST) Received: from sc9-mailhost3.vmware.com ([24.5.191.4]) by smtp.gmail.com with ESMTPSA id o84sm16386093pfa.46.2017.12.15.14.27.55 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Fri, 15 Dec 2017 14:27:55 -0800 (PST) From: William Tu To: netdev@vger.kernel.org Cc: Haishuang Yan Subject: [PATCH net-next 2/2] net: erspan: reload pointer after pskb_may_pull Date: Fri, 15 Dec 2017 14:27:44 -0800 Message-Id: <1513376864-33777-3-git-send-email-u9012063@gmail.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1513376864-33777-1-git-send-email-u9012063@gmail.com> References: <1513376864-33777-1-git-send-email-u9012063@gmail.com> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org pskb_may_pull() can change skb->data, so we need to re-load pkt_md and ershdr at the right place. Fixes: 94d7d8f29287 ("ip6_gre: add erspan v2 support") Fixes: f551c91de262 ("net: erspan: introduce erspan v2 for ip_gre") Signed-off-by: William Tu Cc: Haishuang Yan --- net/ipv4/ip_gre.c | 4 +++- net/ipv6/ip6_gre.c | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/net/ipv4/ip_gre.c b/net/ipv4/ip_gre.c index 1ca7451ff898..02a34098afb0 100644 --- a/net/ipv4/ip_gre.c +++ b/net/ipv4/ip_gre.c @@ -279,7 +279,6 @@ static int erspan_rcv(struct sk_buff *skb, struct tnl_ptk_info *tpi, * Use ERSPAN 10-bit session ID as key. */ tpi->key = cpu_to_be32(ntohs(ershdr->session_id) & ID_MASK); - pkt_md = (struct erspan_metadata *)(ershdr + 1); tunnel = ip_tunnel_lookup(itn, skb->dev->ifindex, tpi->flags | TUNNEL_KEY, iph->saddr, iph->daddr, tpi->key); @@ -289,6 +288,9 @@ static int erspan_rcv(struct sk_buff *skb, struct tnl_ptk_info *tpi, if (unlikely(!pskb_may_pull(skb, len))) return PACKET_REJECT; + ershdr = (struct erspan_base_hdr *)(skb->data + gre_hdr_len); + pkt_md = (struct erspan_metadata *)(ershdr + 1); + if (__iptunnel_pull_header(skb, len, htons(ETH_P_TEB), diff --git a/net/ipv6/ip6_gre.c b/net/ipv6/ip6_gre.c index b3e4e0384f36..87b9892dfa23 100644 --- a/net/ipv6/ip6_gre.c +++ b/net/ipv6/ip6_gre.c @@ -515,7 +515,6 @@ static int ip6erspan_rcv(struct sk_buff *skb, int gre_hdr_len, ver = (ntohs(ershdr->ver_vlan) & VER_MASK) >> VER_OFFSET; tpi->key = cpu_to_be32(ntohs(ershdr->session_id) & ID_MASK); - pkt_md = (struct erspan_metadata *)(ershdr + 1); tunnel = ip6gre_tunnel_lookup(skb->dev, &ipv6h->saddr, &ipv6h->daddr, tpi->key, @@ -526,6 +525,9 @@ static int ip6erspan_rcv(struct sk_buff *skb, int gre_hdr_len, if (unlikely(!pskb_may_pull(skb, len))) return PACKET_REJECT; + ershdr = (struct erspan_base_hdr *)skb->data; + pkt_md = (struct erspan_metadata *)(ershdr + 1); + if (__iptunnel_pull_header(skb, len, htons(ETH_P_TEB), false, false) < 0)