From patchwork Mon Dec 25 02:43:49 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Eli Cooper X-Patchwork-Id: 852760 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=) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3z4k313Y66z9s0g for ; Mon, 25 Dec 2017 13:44:13 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751824AbdLYCoE (ORCPT ); Sun, 24 Dec 2017 21:44:04 -0500 Received: from mout.gmx.net ([212.227.17.21]:64200 "EHLO mout.gmx.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751711AbdLYCoC (ORCPT ); Sun, 24 Dec 2017 21:44:02 -0500 Received: from localhost.localdomain ([168.235.78.26]) by mail.gmx.com (mrgmx101 [212.227.17.174]) with ESMTPSA (Nemesis) id 0LoaCE-1f9oUz2hOk-00gZi3; Mon, 25 Dec 2017 03:43:56 +0100 From: Eli Cooper To: netdev@vger.kernel.org Cc: "David S . Miller" Subject: [PATCH] ip6_tunnel: disable dst caching if tunnel is dual-stack Date: Mon, 25 Dec 2017 10:43:49 +0800 Message-Id: <20171225024349.4879-1-elicooper@gmx.com> X-Mailer: git-send-email 2.15.1 X-Provags-ID: V03:K0:2wEWSAThUgMhBv7/EjMyYc7jRSUJA1ts7UEySTwgtT31WMlsXX0 rkLgeMax9YSeGmXcuA7dbwEArTclgJMrtXDjOLvfkrIkBdHTmcY7sRS3p3u8g1eIwMmvozT dFm3SU0Fzlol7PPZWJUdefY2wOUlXEewViytaOHvo0jRGv/GQIuzUDOf/Gq7pWe0hhNkDwQ L+CC04AC5m6EMa/g6fAEA== X-UI-Out-Filterresults: notjunk:1; V01:K0:635f1Rp47DA=:ov4WwwM3OQGYnDIPfbl4w7 nsY0vFxThKvYp1DIwu3VnojwctxlFfBg2xQGGV9IMtph9zZS4ZPG9/DO1a/dMUZxVEprdW4VI lqw/pkAS/X+YRmkxUByThpdvUb25Rf0P49opyrwYsN4yh3bfdMqLamw5YdVfCmAww7uMJacc7 UucKURtsDtvSYsTV3Kdl+t4GrSBnCwLPJvam3Qns7c3MZiZR6rizgVvFbhE1Vu4/2HsD7bF/y 6QtaNdzDiJzVPiYvOXRB5nNnR0OoRrBXNuofO3reMvOtD1yHBN/J6I3uCrfmFZTweqbYEKY1S zruKkGBuHp35QBeOLUSd7hhim6tmIxB1qrax9BJu5twRTNYpVQKMDcD4agmz9j+RlIjXx+klo KYCK0iifEfBSoW4rlsHTkVX4sPdu2HQkODYoFOgVTVUwP3lwfLZcKhwa3WT/5E+NRmi5VGfSF 5DTbljvXTqK6YDQAd38bnRoI/K6meykaWYN9/X7VKar7Zoh4zs5VNl0JL43Uq2WGRNMQxQKkm 6th963pml7ytUTnSoj0kLstR6PUkKO0YHUa7U7IKuw19E9TRLGANYoh4++9L7Drz3S0MCY3KB x4Aa96tZl42QAE7AIgc35hUvTZ8u4UrR2DsVg2Em7i31w5pRmagoPNfn+XXrzrnURFFsyv2Ar 9BRaMosfQh9pWM2NCT6cKFXf/seLs9eq99JiKpcJfFvSGJCFzUln8/w9Qyt2tTClTx0VSCLm7 Jw8zQo45B9rZRC1OEv3F1hEjnX24GCNPTyCBIN7WTE3NSFP588Du2lu3TZMQ9VOjoDmi+FMvT bnt/Vc++/jWEYLGPxdwrjIATS7eyQ== Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org When an ip6_tunnel is in mode 'any', where the transport layer protocol can be either 4 or 41, dst_cache must be disabled. This is because xfrm policies might apply to only one of the two protocols. Caching dst would cause xfrm policies for one protocol incorrectly used for the other. Cc: stable@vger.kernel.org Signed-off-by: Eli Cooper --- net/ipv6/ip6_tunnel.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/net/ipv6/ip6_tunnel.c b/net/ipv6/ip6_tunnel.c index 931c38f6ff4a..8aea23d15ddd 100644 --- a/net/ipv6/ip6_tunnel.c +++ b/net/ipv6/ip6_tunnel.c @@ -1074,10 +1074,10 @@ int ip6_tnl_xmit(struct sk_buff *skb, struct net_device *dev, __u8 dsfield, memcpy(&fl6->daddr, addr6, sizeof(fl6->daddr)); neigh_release(neigh); } - } else if (!(t->parms.flags & + } else if (t->parms.proto != 0 && !(t->parms.flags & (IP6_TNL_F_USE_ORIG_TCLASS | IP6_TNL_F_USE_ORIG_FWMARK))) { - /* enable the cache only only if the routing decision does - * not depend on the current inner header value + /* enable the cache only if neither the outer protocol nor the + * routing decision depends on the current inner header value */ use_cache = true; }