| From 6067ab0f22c3025eed4d2374fbf04378385720df Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Tue, 4 Mar 2025 19:10:39 +0100 |
| Subject: net: ipv6: fix dst ref loop in ila lwtunnel |
| |
| From: Justin Iurman <justin.iurman@uliege.be> |
| |
| [ Upstream commit 0e7633d7b95b67f1758aea19f8e85621c5f506a3 ] |
| |
| This patch follows commit 92191dd10730 ("net: ipv6: fix dst ref loops in |
| rpl, seg6 and ioam6 lwtunnels") and, on a second thought, the same patch |
| is also needed for ila (even though the config that triggered the issue |
| was pathological, but still, we don't want that to happen). |
| |
| Fixes: 79ff2fc31e0f ("ila: Cache a route to translated address") |
| Cc: Tom Herbert <tom@herbertland.com> |
| Signed-off-by: Justin Iurman <justin.iurman@uliege.be> |
| Link: https://patch.msgid.link/20250304181039.35951-1-justin.iurman@uliege.be |
| Signed-off-by: Paolo Abeni <pabeni@redhat.com> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| net/ipv6/ila/ila_lwt.c | 3 ++- |
| 1 file changed, 2 insertions(+), 1 deletion(-) |
| |
| diff --git a/net/ipv6/ila/ila_lwt.c b/net/ipv6/ila/ila_lwt.c |
| index ff7e734e335b0..ac4bcc623603a 100644 |
| --- a/net/ipv6/ila/ila_lwt.c |
| +++ b/net/ipv6/ila/ila_lwt.c |
| @@ -88,7 +88,8 @@ static int ila_output(struct net *net, struct sock *sk, struct sk_buff *skb) |
| goto drop; |
| } |
| |
| - if (ilwt->connected) { |
| + /* cache only if we don't create a dst reference loop */ |
| + if (ilwt->connected && orig_dst->lwtstate != dst->lwtstate) { |
| local_bh_disable(); |
| dst_cache_set_ip6(&ilwt->dst_cache, dst, &fl6.saddr); |
| local_bh_enable(); |
| -- |
| 2.39.5 |
| |