Received: by 2002:a25:7ec1:0:0:0:0:0 with SMTP id z184csp5985928ybc; Wed, 27 Nov 2019 12:56:39 -0800 (PST) X-Google-Smtp-Source: APXvYqwzTulXN3MIXQF159p8eJiFROQmYTj6K8kXTSq7rO+1qmDgJJXd3KDyKdNObPs7u7pDO2Pr X-Received: by 2002:a17:906:32d0:: with SMTP id k16mr27232781ejk.155.1574888199482; Wed, 27 Nov 2019 12:56:39 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1574888199; cv=none; d=google.com; s=arc-20160816; b=Y8iUfIwYQQ4chmZ6GDWg0qN4O7BJjPc1aKqQ45CHEViUwUExJbsj6tAEz/C8KbRcoa F0+bk2kokn9NIEghIUFz0Ie5TfewfkApgw0wCL+kh+1I9AMfPA7ytEwLW/Cs4pfAc3Bv uRCw5aLpdjJIQVlUObJuHpqdSOG0+bopspfmM7LAqu2fSdnNoHO9mHmOjTpvxSvNV0pJ BazCJMCjLWZVrudb9G6a6yw07K+t1+gB7TqYpzr8XdYrDNn0KgggWaD9rv1+B24Lzami HN+IHJf6dsMKK90exiLMVz9OKlo9fmSGRtSbbQvLm7JAnuIaXNkI/BgBW3B4gtEZjfnv Zq8Q== 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=YGMY6bWvp7XoCgL0WG8CV+upC7TKZPTDa0xpbGszff4=; b=xRiexkcAphqCTZ6r0tfK8s6cN/EUB26Dku/8BHMUfpIXtXqFvK+Aox9tnaoJHrvhtx T46yhFzRRAknGbtJ0b9DyrvobhtloZOjZcitQa3dhgdl0T+2nKPnUWzoLbUmIjzawB1d 2MVgHnbCqvwVvloeL0Xl3pNJ8Q+k5NavpQX9d8kwKmNkB7uJwPP3qMX+u4B2mzwdy92Y IjcQoxX0MLUOHIjov+AcJVtEMkqr256/U3NKy/6GF0SnLXUv5RngrtBad9EKKFI5dZGm R78gi+kRoudXYJOfP1uLmvYmloFDDWwuanV8wihIKIIIwUNPi9a6eJ0P7HXsDMdZ0zBq BYEg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=lc3MsUU6; 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 o21si10296561ejj.188.2019.11.27.12.56.15; Wed, 27 Nov 2019 12:56:39 -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=lc3MsUU6; 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 S1727219AbfK0Uwr (ORCPT + 99 others); Wed, 27 Nov 2019 15:52:47 -0500 Received: from mail.kernel.org ([198.145.29.99]:40514 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1730636AbfK0Uwn (ORCPT ); Wed, 27 Nov 2019 15:52:43 -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 46812218AF; Wed, 27 Nov 2019 20:52:42 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1574887962; bh=3mmOq32V0Wmhic/ngarUJuG2Q8A/YOgyAwDdDnCgk5k=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=lc3MsUU6qIpKo44Um48UR8PR/yFKQIbqwBsHO377ZZD/OV/tGu2vW70fxpHT3n8eD qaUI7XtAjv8mg4ee3YJV4ZpN3wF3xkYNSkTs8PxzEL4izIpRQcYel8MgRe/cLBijBU DKH8gs7ZYWdJN6f8wUfnvNHCHvMEvYb/1MQ1yGbc= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Donald Sharp , Mike Manning , David Ahern , "David S. Miller" , Sasha Levin Subject: [PATCH 4.14 162/211] ipv6: Fix handling of LLA with VRF and sockets bound to VRF Date: Wed, 27 Nov 2019 21:31:35 +0100 Message-Id: <20191127203109.212527771@linuxfoundation.org> X-Mailer: git-send-email 2.24.0 In-Reply-To: <20191127203049.431810767@linuxfoundation.org> References: <20191127203049.431810767@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 c2027d1e17582903e368abf5d4838b22a98f2b7b ] A recent commit allows sockets bound to a VRF to receive ipv6 link local packets. However, it only works for UDP and worse TCP connection attempts to the LLA with the only listener bound to the VRF just hang where as before the client gets a reset and connection refused. Fix by adjusting ir_iif for LL addresses and packets received through a device enslaved to a VRF. Fixes: 6f12fa775530 ("vrf: mark skb for multicast or link-local as enslaved to VRF") Reported-by: Donald Sharp Cc: Mike Manning Signed-off-by: David Ahern Signed-off-by: David S. Miller Signed-off-by: Sasha Levin --- net/ipv6/tcp_ipv6.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/net/ipv6/tcp_ipv6.c b/net/ipv6/tcp_ipv6.c index 7b4ce3f9e2f4e..5ec73cf386dfe 100644 --- a/net/ipv6/tcp_ipv6.c +++ b/net/ipv6/tcp_ipv6.c @@ -718,6 +718,7 @@ static void tcp_v6_init_req(struct request_sock *req, const struct sock *sk_listener, struct sk_buff *skb) { + bool l3_slave = ipv6_l3mdev_skb(TCP_SKB_CB(skb)->header.h6.flags); struct inet_request_sock *ireq = inet_rsk(req); const struct ipv6_pinfo *np = inet6_sk(sk_listener); @@ -725,7 +726,7 @@ static void tcp_v6_init_req(struct request_sock *req, ireq->ir_v6_loc_addr = ipv6_hdr(skb)->daddr; /* So that link locals have meaning */ - if (!sk_listener->sk_bound_dev_if && + if ((!sk_listener->sk_bound_dev_if || l3_slave) && ipv6_addr_type(&ireq->ir_v6_rmt_addr) & IPV6_ADDR_LINKLOCAL) ireq->ir_iif = tcp_v6_iif(skb); -- 2.20.1