]> git.ipfire.org Git - thirdparty/linux.git/commit
ipv6: Remove permanent routes from tb6_gc_hlist when all exceptions expire.
authorKuniyuki Iwashima <kuniyu@google.com>
Fri, 20 Mar 2026 07:22:59 +0000 (07:22 +0000)
committerJakub Kicinski <kuba@kernel.org>
Mon, 23 Mar 2026 23:59:31 +0000 (16:59 -0700)
commit6af51e9f31336632263c4680b2a3712295103e1f
treef8b864311f448dbe274a3cb3f658203c903e1ab9
parentbc0151c59e639c1311ee573434af74b4e2c81de4
ipv6: Remove permanent routes from tb6_gc_hlist when all exceptions expire.

Commit 5eb902b8e719 ("net/ipv6: Remove expired routes with a
separated list of routes.") introduced a per-table GC list and
changed GC to iterate over that list instead of traversing
the entire route table.

However, it forgot to add permanent routes to tb6_gc_hlist
when exception routes are added.

Commit cfe82469a00f ("ipv6: add exception routes to GC list
in rt6_insert_exception") fixed that issue but introduced
another one.

Even after all exception routes expire, the permanent routes
remain in tb6_gc_hlist, potentially negating the performance
benefits intended by the initial change.

Let's count gc_args->more before and after rt6_age_exceptions()
and remove the permanent route when the delta is 0.

Note that the next patch will reuse fib6_age_exceptions().

Fixes: cfe82469a00f ("ipv6: add exception routes to GC list in rt6_insert_exception")
Signed-off-by: Kuniyuki Iwashima <kuniyu@google.com>
Reviewed-by: Xin Long <lucien.xin@gmail.com>
Reviewed-by: David Ahern <dsahern@kernel.org>
Link: https://patch.msgid.link/20260320072317.2561779-2-kuniyu@google.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
net/ipv6/ip6_fib.c