Received: by 2002:a25:1985:0:0:0:0:0 with SMTP id 127csp4452205ybz; Tue, 28 Apr 2020 11:32:17 -0700 (PDT) X-Google-Smtp-Source: APiQypK3zNr0q4Cptc293w8WDPApGPYU7aFwg8nUNOI0xkBpmq2JiIlpyfIn2JjgfTo60ffoXZaX X-Received: by 2002:a17:906:bb07:: with SMTP id jz7mr24987705ejb.317.1588098736810; Tue, 28 Apr 2020 11:32:16 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1588098736; cv=none; d=google.com; s=arc-20160816; b=mg9mxuLTzEW/uZBItHN19u0B7wEPi3+K3fcI6Rg6mdbx4kqPvzzArAXWZGifeQqoGi /3f1NgXuPeutVjdS8dGXndbgYAOwO1J8BIFfs05y2sH0m3qXZJHKfYmi2NRDHvUnURzI bH/qI2dUvrzed/7JilAdmqjxP8A2IAoQ2kLUzYNj36DesaMj1sri4cFiU9rwXnaAupHC jginT5Bv1ZXBS52q2woM/o8d1rrAxJkBPf92A5Zh9OOhlWP1LtzqcJofdJQAzhW5e7lk WUxf/EICQjgIk/A2l3bSSKoXl5Z/15crNCsrtPngk1yBkp+uM+DHGskJ6+Mcl9UAA7kt GNvg== 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=RXaWGZLHEIoq7PwCy7c/T23CEAsfQYi2ia0upDDqLHI=; b=00EFMZV/cH+miSJmz5/icKn/o+jtLI1cz99ncWeCYIraY7S/IRLAmqFSYY2+cnk1OD UkmYzqqUlp7yL7qXYw1LNFfiQjHTwAOcgR9y7Jjx6DocCppjGy519cuyP0SO3QzZvHxs 1s8tNYUS4j9GE+K4LQrXLs/LM4EwqG6/UcOJWqfZBRoVPFSlCCuKe2kR55Da3p4Ste6P 6eGxpr0ZGqC8mVwWHekDYctumKC+JLbt1vo6r3YHVBuXr/VkYF18QIqyalQqPganSbNY ZpK6y5Z5wFFVqAp6Un6FaR1BHv0/UhbHi5OdCSlTsJc93EAISQ1+NGDRfdl2/Qod7Wyc L56A== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b="io9bwbM/"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id u22si2509455edd.207.2020.04.28.11.31.53; Tue, 28 Apr 2020 11:32:16 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b="io9bwbM/"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729354AbgD1S31 (ORCPT + 99 others); Tue, 28 Apr 2020 14:29:27 -0400 Received: from mail.kernel.org ([198.145.29.99]:43088 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729341AbgD1S3X (ORCPT ); Tue, 28 Apr 2020 14:29:23 -0400 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 D290C20730; Tue, 28 Apr 2020 18:29:22 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1588098563; bh=BXPBF0HCqDhjEuLrlipSEpJlmx9iG2t73J30Yda2roE=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=io9bwbM/xaoJVp1+XnGXJxRgom67PwqZP2NPznG3rUsOguf/h5T1+hOFMSNjMgO2V 2CwTqEUXPe1vdfVOs75ucMKV2sw2+QtWVbqtS+mfQJrcgWjvSRHmK6ZXkh3084BVIN ZW42S7qfgfUbd1shRSUShgmcsHtivV77h0sGcb5E= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Trev Larock , David Ahern , "David S. Miller" Subject: [PATCH 5.6 073/167] vrf: Check skb for XFRM_TRANSFORMED flag Date: Tue, 28 Apr 2020 20:24:09 +0200 Message-Id: <20200428182234.157712774@linuxfoundation.org> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20200428182225.451225420@linuxfoundation.org> References: <20200428182225.451225420@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: David Ahern [ Upstream commit 16b9db1ce34ff00d6c18e82825125cfef0cdfb13 ] To avoid a loop with qdiscs and xfrms, check if the skb has already gone through the qdisc attached to the VRF device and then to the xfrm layer. If so, no need for a second redirect. Fixes: 193125dbd8eb ("net: Introduce VRF device driver") Reported-by: Trev Larock Signed-off-by: David Ahern Signed-off-by: David S. Miller Signed-off-by: Greg Kroah-Hartman --- drivers/net/vrf.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) --- a/drivers/net/vrf.c +++ b/drivers/net/vrf.c @@ -474,7 +474,8 @@ static struct sk_buff *vrf_ip6_out(struc if (rt6_need_strict(&ipv6_hdr(skb)->daddr)) return skb; - if (qdisc_tx_is_default(vrf_dev)) + if (qdisc_tx_is_default(vrf_dev) || + IP6CB(skb)->flags & IP6SKB_XFRM_TRANSFORMED) return vrf_ip6_out_direct(vrf_dev, sk, skb); return vrf_ip6_out_redirect(vrf_dev, skb); @@ -686,7 +687,8 @@ static struct sk_buff *vrf_ip_out(struct ipv4_is_lbcast(ip_hdr(skb)->daddr)) return skb; - if (qdisc_tx_is_default(vrf_dev)) + if (qdisc_tx_is_default(vrf_dev) || + IPCB(skb)->flags & IPSKB_XFRM_TRANSFORMED) return vrf_ip_out_direct(vrf_dev, sk, skb); return vrf_ip_out_redirect(vrf_dev, skb);