[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <97703169844b3ae14e2e7623281546aa9533b48a.1717087015.git.pabeni@redhat.com>
Date: Thu, 30 May 2024 19:21:02 +0200
From: Paolo Abeni <pabeni@...hat.com>
To: netdev@...r.kernel.org
Cc: "David S. Miller" <davem@...emloft.net>,
Eric Dumazet <edumazet@...gle.com>,
David Ahern <dsahern@...nel.org>,
Jakub Kicinski <kuba@...nel.org>
Subject: [PATCH net-next 2/3] ipv4: obsolete routes moved out of per cpu cache
When a new entry replaces an existing one in the next hop per cpu cache,
the old entry is added to the uncached list.
Soon we are going to insert in the uncached list even entries held by
the dst_cache(s), the above could cause double add.
Avoid the potential issue obsoleting the old entry instead. This
additionally make the stack more consistent with ipv6, as the latter
already calls dst_dev_put() when replacing per cpu cached entries.
Signed-off-by: Paolo Abeni <pabeni@...hat.com>
---
net/ipv4/route.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/net/ipv4/route.c b/net/ipv4/route.c
index 5fd54103174f..506452f1395d 100644
--- a/net/ipv4/route.c
+++ b/net/ipv4/route.c
@@ -1473,7 +1473,7 @@ static bool rt_cache_route(struct fib_nh_common *nhc, struct rtable *rt)
prev = cmpxchg(p, orig, rt);
if (prev == orig) {
if (orig) {
- rt_add_uncached_list(orig);
+ dst_dev_put(&orig->dst);
dst_release(&orig->dst);
}
} else {
--
2.43.2
Powered by blists - more mailing lists