Received: by 2002:a25:1985:0:0:0:0:0 with SMTP id 127csp4471613ybz; Tue, 28 Apr 2020 11:52:05 -0700 (PDT) X-Google-Smtp-Source: APiQypJ5VWA5CkiXCayBAA733gD3uXWvm3s3ejtXpzwbRGISi+SCryLiYefrYxF9pX0Hrcbc7vAC X-Received: by 2002:a17:906:4356:: with SMTP id z22mr25027274ejm.334.1588099925362; Tue, 28 Apr 2020 11:52:05 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1588099925; cv=none; d=google.com; s=arc-20160816; b=DUOS3B5Ei2kyam+bijG0kdeA9CNL/x9zlz+pzSAs69cOpASuHHxbcD8SsE+6cB1Dlb 6cY9w9jlH3O722Bq05a++7oSWgDyKuOQX6RwMsZ7hLkE+hrwooPrcttb/X5hk1Z5t5HC 5OH1IyT/yDwllUWh6Z2qlZnus+c6cF1PRfddK3BxFiTABC4fUGtYxs9AhVbgdDNvRSJ0 LGaP6SzWZBP4zy/yhO43rf+Ulo372SQ2cmCz//+uZ58l+djo8FQ01y0Qblas0uDdSiIk cEM+DtBngJQsYVwmTG+uvct6oHoRTCPgz1GckTcZahv6mTw7LUq6d99p1BsoE2++l3SG EPhQ== 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=nF7kFQPsLIHqbU/0xq1oih1VPzeGflQ0Bm+MZ1X9D8wyqzSXl6V/sbpPvce9eocCqF sarwAXNRHUMwDO8PySF16KIKi6vcmDjBLrFjIJCEdCnTXB3Adv4gtT1DDU1LKZIhyzWk zImooHN82ApJxqqiunBr4st2VGldXTIVIPKiWWmPBPxv9OIzeUOE8FClhYPuLaw2z7HP RIUAQZyAPTIzhsDFgwVyhENvlvm/JeXy9SMCt1pPuoWPruTvzPH0yylRKlRxyPZjZILy cLAmV2GzK8SVfFXdEKOYQVZsA2Zjh2+peo/O6JOk6AIVMpRFReSIb371Bfg1uoIy7r8U 7VMQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=1gfxzq3P; 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 a22si2332026edn.385.2020.04.28.11.51.42; Tue, 28 Apr 2020 11:52:05 -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=1gfxzq3P; 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 S1730664AbgD1Ssa (ORCPT + 99 others); Tue, 28 Apr 2020 14:48:30 -0400 Received: from mail.kernel.org ([198.145.29.99]:60292 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1730833AbgD1Sky (ORCPT ); Tue, 28 Apr 2020 14:40:54 -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 B3715218AC; Tue, 28 Apr 2020 18:40:53 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1588099254; bh=BXPBF0HCqDhjEuLrlipSEpJlmx9iG2t73J30Yda2roE=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=1gfxzq3PfxsVWLSkR6kxyws5AiwhrsCzOl2X5sqp8RdaUpr4JXyNuhgi2GhZbe9xH OnVuKHkYdxTCX3yRHZK1oHxCnWA01+erTGXdAtSww67yHbccym2EOBAnfJfqdX3ngg 3GZy/9Cyrhn9zZ6wtB8H2kLwDjeURT85SYHI1fsg= 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.4 082/168] vrf: Check skb for XFRM_TRANSFORMED flag Date: Tue, 28 Apr 2020 20:24:16 +0200 Message-Id: <20200428182242.572032058@linuxfoundation.org> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20200428182231.704304409@linuxfoundation.org> References: <20200428182231.704304409@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);