netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Sasha Levin <sashal@kernel.org>
To: linux-kernel@vger.kernel.org, stable@vger.kernel.org
Cc: David Ahern <dsahern@gmail.com>,
	Donald Sharp <sharpd@cumulusnetworks.com>,
	Mike Manning <mmanning@vyatta.att-mail.com>,
	"David S . Miller" <davem@davemloft.net>,
	Sasha Levin <sashal@kernel.org>,
	netdev@vger.kernel.org
Subject: [PATCH AUTOSEL 4.9 99/99] ipv6: Fix handling of LLA with VRF and sockets bound to VRF
Date: Sat, 16 Nov 2019 10:51:02 -0500	[thread overview]
Message-ID: <20191116155103.10971-99-sashal@kernel.org> (raw)
In-Reply-To: <20191116155103.10971-1-sashal@kernel.org>

From: David Ahern <dsahern@gmail.com>

[ 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 <sharpd@cumulusnetworks.com>
Cc: Mike Manning <mmanning@vyatta.att-mail.com>
Signed-off-by: David Ahern <dsahern@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 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 4953466cf98f0..54e2557335c1c 100644
--- a/net/ipv6/tcp_ipv6.c
+++ b/net/ipv6/tcp_ipv6.c
@@ -693,6 +693,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);
 
@@ -700,7 +701,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


      parent reply	other threads:[~2019-11-16 15:53 UTC|newest]

Thread overview: 27+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <20191116155103.10971-1-sashal@kernel.org>
2019-11-16 15:49 ` [PATCH AUTOSEL 4.9 07/99] brcmsmac: AP mode: update beacon when TIM changes Sasha Levin
2019-11-16 15:49 ` [PATCH AUTOSEL 4.9 08/99] ath10k: allocate small size dma memory in ath10k_pci_diag_write_mem Sasha Levin
2019-11-16 15:49 ` [PATCH AUTOSEL 4.9 25/99] net: fix warning in af_unix Sasha Levin
2019-11-16 15:49 ` [PATCH AUTOSEL 4.9 26/99] net: ena: Fix Kconfig dependency on X86 Sasha Levin
2019-11-16 15:49 ` [PATCH AUTOSEL 4.9 33/99] SUNRPC: Fix a compile warning for cmpxchg64() Sasha Levin
2019-11-16 15:49 ` [PATCH AUTOSEL 4.9 34/99] sunrpc: safely reallow resvport min/max inversion Sasha Levin
2019-11-16 15:49 ` [PATCH AUTOSEL 4.9 35/99] atm: zatm: Fix empty body Clang warnings Sasha Levin
2019-11-16 15:50 ` [PATCH AUTOSEL 4.9 42/99] mISDN: Fix type of switch control variable in ctrl_teimanager Sasha Levin
2019-11-16 15:50 ` [PATCH AUTOSEL 4.9 43/99] qlcnic: fix a return in qlcnic_dcb_get_capability() Sasha Levin
2019-11-16 15:50 ` [PATCH AUTOSEL 4.9 44/99] net: ethernet: ti: cpsw: unsync mcast entries while switch promisc mode Sasha Levin
2019-11-16 15:50 ` [PATCH AUTOSEL 4.9 51/99] sparc64: Rework xchg() definition to avoid warnings Sasha Levin
2019-11-16 15:50 ` [PATCH AUTOSEL 4.9 54/99] macsec: update operstate when lower device changes Sasha Levin
2019-11-16 15:50 ` [PATCH AUTOSEL 4.9 55/99] macsec: let the administrator set UP state even if lowerdev is down Sasha Levin
2019-11-16 15:50 ` [PATCH AUTOSEL 4.9 69/99] igb: shorten maximum PHC timecounter update interval Sasha Levin
2019-11-16 15:50 ` [PATCH AUTOSEL 4.9 70/99] ntb_netdev: fix sleep time mismatch Sasha Levin
2019-11-16 15:50 ` [PATCH AUTOSEL 4.9 75/99] net: do not abort bulk send on BQL status Sasha Levin
2019-11-16 15:50 ` [PATCH AUTOSEL 4.9 78/99] wlcore: Fix the return value in case of error in 'wlcore_vendor_cmd_smart_config_start()' Sasha Levin
2019-11-16 15:50 ` [PATCH AUTOSEL 4.9 79/99] rtl8xxxu: Fix missing break in switch Sasha Levin
2019-11-16 15:50 ` [PATCH AUTOSEL 4.9 80/99] brcmsmac: never log "tid x is not agg'able" by default Sasha Levin
2019-11-16 15:50 ` [PATCH AUTOSEL 4.9 81/99] wireless: airo: potential buffer overflow in sprintf() Sasha Levin
2019-11-16 15:50 ` [PATCH AUTOSEL 4.9 82/99] rtlwifi: rtl8192de: Fix misleading REG_MCUFWDL information Sasha Levin
2019-11-16 15:50 ` [PATCH AUTOSEL 4.9 89/99] vrf: mark skb for multicast or link-local as enslaved to VRF Sasha Levin
2019-11-17 16:44   ` David Ahern
2019-11-25 14:35     ` Sasha Levin
2019-11-16 15:50 ` [PATCH AUTOSEL 4.9 91/99] net: bcmgenet: return correct value 'ret' from bcmgenet_power_down Sasha Levin
2019-11-16 15:50 ` [PATCH AUTOSEL 4.9 92/99] sock: Reset dst when changing sk_mark via setsockopt Sasha Levin
2019-11-16 15:51 ` Sasha Levin [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20191116155103.10971-99-sashal@kernel.org \
    --to=sashal@kernel.org \
    --cc=davem@davemloft.net \
    --cc=dsahern@gmail.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mmanning@vyatta.att-mail.com \
    --cc=netdev@vger.kernel.org \
    --cc=sharpd@cumulusnetworks.com \
    --cc=stable@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).