Received: by 2002:a17:90a:88:0:0:0:0 with SMTP id a8csp13646pja; Fri, 22 Nov 2019 02:48:49 -0800 (PST) X-Google-Smtp-Source: APXvYqxC4sjRSQfXIuXolNFoKEydZ8TyT0u6+vlGvsxw0aYb7ZvTBKYIGcGiyy4YUjyhccZKIUJN X-Received: by 2002:aa7:d7c5:: with SMTP id e5mr247201eds.233.1574419729342; Fri, 22 Nov 2019 02:48:49 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1574419729; cv=none; d=google.com; s=arc-20160816; b=iipEtQH15qdODOCGEsgc5WkDlWgVgGISIXeisMYWpeYhr/J3RPub6gsfx7IB4JJZ8H KTvAbpWMb2QydVJw5cUobb/qI+b7rz3NcjF7fkdStfDsWNd1d1ixH6sf0zVh1YJKR2mw AiBiALbAWEAEumwePKIoZ2bB8oIgEAtu8OQ9oBFiSEWfKbka4CCdLsnmUqmIpMJSe7vS 2FOQo+MuwYa989gVbJlBTpqwGue93+tTwoUE4MHyShGcRrgNSMBEBfDg7I3gShNXinmU kb17jLvbx39Suee+Ftqsox6nCRXo1nOlzG7pZ5VarQkcB9qrlIRh4vGicql9Ont6MKyg 1ghw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=PtifZpa3HUAW/QE44HnF9YH2HoacaM35YwtoitOlTEI=; b=J9u7mel1bnx1SWIsvbalzc9rSqDgTXKON33Ivgs7oGe2vuKdfj7kmq73Fv9vJBn8fh fxPBQJV0Sq1erPsp667DBS4itR6xKeDh2AAQfqjBBPjfMQjk1ndQQBpscF74xxMLmSVV AqGaRBoRhB9wEFvofcuuOVr+6fm2reaKkVkpDaLxryGTUQKZd1ZLYZlbWfuG/rf6R0bV WbxZWiS6PTZohvq//hbYm9ZAd9XN4hMXWoCrBq+zG/vAE5vTz8EiNjyFcgAAR02PHxtP NyTjwTX2W9yBF0SX4lsRV5POGwsBdb+uaurPTyZFqWGtjZRwxs5PfgA0LGoCzrqujD9k rXXw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=ksq13Dof; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id lw2si2587638ejb.440.2019.11.22.02.48.25; Fri, 22 Nov 2019 02:48:49 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=ksq13Dof; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729350AbfKVKoa (ORCPT + 99 others); Fri, 22 Nov 2019 05:44:30 -0500 Received: from mail.kernel.org ([198.145.29.99]:50348 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729339AbfKVKo0 (ORCPT ); Fri, 22 Nov 2019 05:44:26 -0500 Received: from localhost (83-86-89-107.cable.dynamic.v4.ziggo.nl [83.86.89.107]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 2921C20637; Fri, 22 Nov 2019 10:44:24 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1574419465; bh=uvTzRYFfk/sJXWEWGYxYzMFli1kGT3IeXso2izXmZUg=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=ksq13DofqlXY0X88PFP7O0uLVl9vxh5IuqLE+fa8MTmvv0z+MMu4yJdrEjqONmwak /rH3tuaIICqJFaOmfOUjQfIHMk8qGhrf6jpAPYFjq0mS/FQnlTAqdCXOA53zaiU/8v 6F/VL8YwOQ4w/BgBAv6xW8Jk5lPcAOFK5AmZtI8s= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Jiri Benc , Haishuang Yan , "David S. Miller" , Sasha Levin Subject: [PATCH 4.9 077/222] ip_gre: fix parsing gre header in ipgre_err Date: Fri, 22 Nov 2019 11:26:57 +0100 Message-Id: <20191122100908.756029310@linuxfoundation.org> X-Mailer: git-send-email 2.24.0 In-Reply-To: <20191122100830.874290814@linuxfoundation.org> References: <20191122100830.874290814@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Haishuang Yan [ Upstream commit b0350d51f001e6edc13ee4f253b98b50b05dd401 ] gre_parse_header stops parsing when csum_err is encountered, which means tpi->key is undefined and ip_tunnel_lookup will return NULL improperly. This patch introduce a NULL pointer as csum_err parameter. Even when csum_err is encountered, it won't return error and continue parsing gre header as expected. Fixes: 9f57c67c379d ("gre: Remove support for sharing GRE protocol hook.") Reported-by: Jiri Benc Signed-off-by: Haishuang Yan Signed-off-by: David S. Miller Signed-off-by: Sasha Levin --- net/ipv4/gre_demux.c | 7 ++++--- net/ipv4/ip_gre.c | 9 +++------ 2 files changed, 7 insertions(+), 9 deletions(-) diff --git a/net/ipv4/gre_demux.c b/net/ipv4/gre_demux.c index b798862b6be5d..7efe740c06ebf 100644 --- a/net/ipv4/gre_demux.c +++ b/net/ipv4/gre_demux.c @@ -86,13 +86,14 @@ 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 (!skb_checksum_simple_validate(skb)) { + skb_checksum_try_convert(skb, IPPROTO_GRE, 0, + null_compute_pseudo); + } else if (csum_err) { *csum_err = true; return -EINVAL; } - skb_checksum_try_convert(skb, IPPROTO_GRE, 0, - null_compute_pseudo); options++; } diff --git a/net/ipv4/ip_gre.c b/net/ipv4/ip_gre.c index 576f705d81809..9609ad71dd260 100644 --- a/net/ipv4/ip_gre.c +++ b/net/ipv4/ip_gre.c @@ -224,13 +224,10 @@ static void gre_err(struct sk_buff *skb, u32 info) const int type = icmp_hdr(skb)->type; const int code = icmp_hdr(skb)->code; struct tnl_ptk_info tpi; - bool csum_err = false; - if (gre_parse_header(skb, &tpi, &csum_err, htons(ETH_P_IP), - iph->ihl * 4) < 0) { - if (!csum_err) /* ignore csum errors. */ - return; - } + if (gre_parse_header(skb, &tpi, NULL, htons(ETH_P_IP), + iph->ihl * 4) < 0) + return; if (type == ICMP_DEST_UNREACH && code == ICMP_FRAG_NEEDED) { ipv4_update_pmtu(skb, dev_net(skb->dev), info, -- 2.20.1