* [PATCH v2 net 0/2] ipv6: Fix two GC issues with permanent routes
@ 2026-03-08 3:22 Kuniyuki Iwashima
2026-03-08 3:22 ` [PATCH v2 net 1/2] ipv6: Remove permanent routes from tb6_gc_hlist when all exceptions expire Kuniyuki Iwashima
2026-03-08 3:22 ` [PATCH v2 net 2/2] ipv6: Don't remove permanent routes with exceptions from tb6_gc_hlist Kuniyuki Iwashima
0 siblings, 2 replies; 6+ messages in thread
From: Kuniyuki Iwashima @ 2026-03-08 3:22 UTC (permalink / raw)
To: David Ahern, David S . Miller, Eric Dumazet, Jakub Kicinski,
Paolo Abeni
Cc: Kui-Feng Lee, Xin Long, Simon Horman, Kuniyuki Iwashima,
Kuniyuki Iwashima, netdev
Patch 1 fixes the unbounded growth of tb6_gc_hlist due to
permanent routes whose exception routes have all expired.
Patch 2 fixes an issue where exception routes tied to
permanent routes are not properly aged.
Changes:
v2:
Patch 2: Fix build failure when CONFIG_IPV6=n (no net->ipv6 definition)
v1: https://lore.kernel.org/netdev/20260307024709.718395-1-kuniyu@google.com/
Kuniyuki Iwashima (2):
ipv6: Remove permanent routes from tb6_gc_hlist when all exceptions
expire.
ipv6: Don't remove permanent routes with exceptions from tb6_gc_hlist.
include/net/ip6_fib.h | 19 ++++++++++++++++++-
net/ipv6/addrconf.c | 4 ++--
net/ipv6/ip6_fib.c | 15 +++++++++++++--
net/ipv6/route.c | 2 +-
4 files changed, 34 insertions(+), 6 deletions(-)
--
2.53.0.473.g4a7958ca14-goog
^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH v2 net 1/2] ipv6: Remove permanent routes from tb6_gc_hlist when all exceptions expire.
2026-03-08 3:22 [PATCH v2 net 0/2] ipv6: Fix two GC issues with permanent routes Kuniyuki Iwashima
@ 2026-03-08 3:22 ` Kuniyuki Iwashima
2026-03-08 3:22 ` [PATCH v2 net 2/2] ipv6: Don't remove permanent routes with exceptions from tb6_gc_hlist Kuniyuki Iwashima
1 sibling, 0 replies; 6+ messages in thread
From: Kuniyuki Iwashima @ 2026-03-08 3:22 UTC (permalink / raw)
To: David Ahern, David S . Miller, Eric Dumazet, Jakub Kicinski,
Paolo Abeni
Cc: Kui-Feng Lee, Xin Long, Simon Horman, Kuniyuki Iwashima,
Kuniyuki Iwashima, netdev
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>
---
net/ipv6/ip6_fib.c | 13 ++++++++++++-
1 file changed, 12 insertions(+), 1 deletion(-)
diff --git a/net/ipv6/ip6_fib.c b/net/ipv6/ip6_fib.c
index 9058e71241dc..fadfca49d6b1 100644
--- a/net/ipv6/ip6_fib.c
+++ b/net/ipv6/ip6_fib.c
@@ -2348,6 +2348,17 @@ static void fib6_flush_trees(struct net *net)
/*
* Garbage collection
*/
+static void fib6_age_exceptions(struct fib6_info *rt, struct fib6_gc_args *gc_args,
+ unsigned long now)
+{
+ bool may_expire = rt->fib6_flags & RTF_EXPIRES && rt->expires;
+ int old_more = gc_args->more;
+
+ rt6_age_exceptions(rt, gc_args, now);
+
+ if (!may_expire && old_more == gc_args->more)
+ fib6_remove_gc_list(rt);
+}
static int fib6_age(struct fib6_info *rt, struct fib6_gc_args *gc_args)
{
@@ -2370,7 +2381,7 @@ static int fib6_age(struct fib6_info *rt, struct fib6_gc_args *gc_args)
* Note, that clones are aged out
* only if they are not in use now.
*/
- rt6_age_exceptions(rt, gc_args, now);
+ fib6_age_exceptions(rt, gc_args, now);
return 0;
}
--
2.53.0.473.g4a7958ca14-goog
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH v2 net 2/2] ipv6: Don't remove permanent routes with exceptions from tb6_gc_hlist.
2026-03-08 3:22 [PATCH v2 net 0/2] ipv6: Fix two GC issues with permanent routes Kuniyuki Iwashima
2026-03-08 3:22 ` [PATCH v2 net 1/2] ipv6: Remove permanent routes from tb6_gc_hlist when all exceptions expire Kuniyuki Iwashima
@ 2026-03-08 3:22 ` Kuniyuki Iwashima
2026-03-08 13:02 ` kernel test robot
2026-03-08 14:50 ` kernel test robot
1 sibling, 2 replies; 6+ messages in thread
From: Kuniyuki Iwashima @ 2026-03-08 3:22 UTC (permalink / raw)
To: David Ahern, David S . Miller, Eric Dumazet, Jakub Kicinski,
Paolo Abeni
Cc: Kui-Feng Lee, Xin Long, Simon Horman, Kuniyuki Iwashima,
Kuniyuki Iwashima, netdev
The cited commit mechanically put fib6_remove_gc_list()
just after every fib6_clean_expires() call.
When a temporary route is promoted to a permanent route,
there may already be exception routes tied to it.
If fib6_remove_gc_list() removes the route from tb6_gc_hlist,
such exception routes will no longer be aged.
Let's replace fib6_remove_gc_list() with a new helper
fib6_may_remove_gc_list() and use fib6_age_exceptions() there.
Fixes: 5eb902b8e719 ("net/ipv6: Remove expired routes with a separated list of routes.")
Signed-off-by: Kuniyuki Iwashima <kuniyu@google.com>
---
v2: Fix build failure when CONFIG_IPV6=n (no net->ipv6 definition)
---
include/net/ip6_fib.h | 19 ++++++++++++++++++-
net/ipv6/addrconf.c | 4 ++--
net/ipv6/ip6_fib.c | 6 +++---
net/ipv6/route.c | 2 +-
4 files changed, 24 insertions(+), 7 deletions(-)
diff --git a/include/net/ip6_fib.h b/include/net/ip6_fib.h
index 88b0dd4d8e09..63183abf61b7 100644
--- a/include/net/ip6_fib.h
+++ b/include/net/ip6_fib.h
@@ -507,12 +507,14 @@ void fib6_rt_update(struct net *net, struct fib6_info *rt,
void inet6_rt_notify(int event, struct fib6_info *rt, struct nl_info *info,
unsigned int flags);
+void fib6_age_exceptions(struct fib6_info *rt, struct fib6_gc_args *gc_args,
+ unsigned long now);
void fib6_run_gc(unsigned long expires, struct net *net, bool force);
-
void fib6_gc_cleanup(void);
int fib6_init(void);
+#ifdef CONFIG_IPV6
/* Add the route to the gc list if it is not already there
*
* The callers should hold f6i->fib6_table->tb6_lock.
@@ -545,6 +547,21 @@ static inline void fib6_remove_gc_list(struct fib6_info *f6i)
hlist_del_init(&f6i->gc_link);
}
+static inline void fib6_may_remove_gc_list(struct net *net,
+ struct fib6_info *f6i)
+{
+ struct fib6_gc_args gc_args;
+
+ if (hlist_unhashed(&f6i->gc_link))
+ return;
+
+ gc_args.timeout = READ_ONCE(net->ipv6.sysctl.ip6_rt_gc_interval),
+ gc_args.more = 0,
+
+ fib6_age_exceptions(f6i, &gc_args, jiffies);
+}
+#endif
+
struct ipv6_route_iter {
struct seq_net_private p;
struct fib6_walker w;
diff --git a/net/ipv6/addrconf.c b/net/ipv6/addrconf.c
index 0e55f139e05d..f4e23b543585 100644
--- a/net/ipv6/addrconf.c
+++ b/net/ipv6/addrconf.c
@@ -2862,7 +2862,7 @@ void addrconf_prefix_rcv(struct net_device *dev, u8 *opt, int len, bool sllao)
fib6_add_gc_list(rt);
} else {
fib6_clean_expires(rt);
- fib6_remove_gc_list(rt);
+ fib6_may_remove_gc_list(net, rt);
}
spin_unlock_bh(&table->tb6_lock);
@@ -4840,7 +4840,7 @@ static int modify_prefix_route(struct net *net, struct inet6_ifaddr *ifp,
if (!(flags & RTF_EXPIRES)) {
fib6_clean_expires(f6i);
- fib6_remove_gc_list(f6i);
+ fib6_may_remove_gc_list(net, f6i);
} else {
fib6_set_expires(f6i, expires);
fib6_add_gc_list(f6i);
diff --git a/net/ipv6/ip6_fib.c b/net/ipv6/ip6_fib.c
index fadfca49d6b1..dd26657b6a4a 100644
--- a/net/ipv6/ip6_fib.c
+++ b/net/ipv6/ip6_fib.c
@@ -1133,7 +1133,7 @@ static int fib6_add_rt2node(struct fib6_node *fn, struct fib6_info *rt,
return -EEXIST;
if (!(rt->fib6_flags & RTF_EXPIRES)) {
fib6_clean_expires(iter);
- fib6_remove_gc_list(iter);
+ fib6_may_remove_gc_list(info->nl_net, iter);
} else {
fib6_set_expires(iter, rt->expires);
fib6_add_gc_list(iter);
@@ -2348,8 +2348,8 @@ static void fib6_flush_trees(struct net *net)
/*
* Garbage collection
*/
-static void fib6_age_exceptions(struct fib6_info *rt, struct fib6_gc_args *gc_args,
- unsigned long now)
+void fib6_age_exceptions(struct fib6_info *rt, struct fib6_gc_args *gc_args,
+ unsigned long now)
{
bool may_expire = rt->fib6_flags & RTF_EXPIRES && rt->expires;
int old_more = gc_args->more;
diff --git a/net/ipv6/route.c b/net/ipv6/route.c
index 08cd86f49bf9..cb521700cee7 100644
--- a/net/ipv6/route.c
+++ b/net/ipv6/route.c
@@ -1033,7 +1033,7 @@ int rt6_route_rcv(struct net_device *dev, u8 *opt, int len,
if (!addrconf_finite_timeout(lifetime)) {
fib6_clean_expires(rt);
- fib6_remove_gc_list(rt);
+ fib6_may_remove_gc_list(net, rt);
} else {
fib6_set_expires(rt, jiffies + HZ * lifetime);
fib6_add_gc_list(rt);
--
2.53.0.473.g4a7958ca14-goog
^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH v2 net 2/2] ipv6: Don't remove permanent routes with exceptions from tb6_gc_hlist.
2026-03-08 3:22 ` [PATCH v2 net 2/2] ipv6: Don't remove permanent routes with exceptions from tb6_gc_hlist Kuniyuki Iwashima
@ 2026-03-08 13:02 ` kernel test robot
2026-03-08 14:50 ` kernel test robot
1 sibling, 0 replies; 6+ messages in thread
From: kernel test robot @ 2026-03-08 13:02 UTC (permalink / raw)
To: Kuniyuki Iwashima, David Ahern, David S . Miller, Eric Dumazet,
Jakub Kicinski, Paolo Abeni
Cc: oe-kbuild-all, Kui-Feng Lee, Xin Long, Simon Horman,
Kuniyuki Iwashima, netdev
Hi Kuniyuki,
kernel test robot noticed the following build errors:
[auto build test ERROR on net/main]
url: https://github.com/intel-lab-lkp/linux/commits/Kuniyuki-Iwashima/ipv6-Remove-permanent-routes-from-tb6_gc_hlist-when-all-exceptions-expire/20260308-113030
base: net/main
patch link: https://lore.kernel.org/r/20260308032304.1841198-3-kuniyu%40google.com
patch subject: [PATCH v2 net 2/2] ipv6: Don't remove permanent routes with exceptions from tb6_gc_hlist.
config: nios2-allmodconfig (https://download.01.org/0day-ci/archive/20260308/202603082146.XcUdD9Ob-lkp@intel.com/config)
compiler: nios2-linux-gcc (GCC) 11.5.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260308/202603082146.XcUdD9Ob-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202603082146.XcUdD9Ob-lkp@intel.com/
All errors (new ones prefixed by >>):
net/ipv6/addrconf.c: In function 'cleanup_prefix_route':
>> net/ipv6/addrconf.c:1282:33: error: implicit declaration of function 'fib6_add_gc_list' [-Werror=implicit-function-declaration]
1282 | fib6_add_gc_list(f6i);
| ^~~~~~~~~~~~~~~~
net/ipv6/addrconf.c: In function 'addrconf_prefix_rcv':
>> net/ipv6/addrconf.c:2865:41: error: implicit declaration of function 'fib6_may_remove_gc_list' [-Werror=implicit-function-declaration]
2865 | fib6_may_remove_gc_list(net, rt);
| ^~~~~~~~~~~~~~~~~~~~~~~
cc1: some warnings being treated as errors
--
net/ipv6/route.c: In function 'rt6_route_rcv':
>> net/ipv6/route.c:1036:25: error: implicit declaration of function 'fib6_may_remove_gc_list' [-Werror=implicit-function-declaration]
1036 | fib6_may_remove_gc_list(net, rt);
| ^~~~~~~~~~~~~~~~~~~~~~~
>> net/ipv6/route.c:1039:25: error: implicit declaration of function 'fib6_add_gc_list' [-Werror=implicit-function-declaration]
1039 | fib6_add_gc_list(rt);
| ^~~~~~~~~~~~~~~~
cc1: some warnings being treated as errors
--
net/ipv6/ip6_fib.c: In function 'fib6_purge_rt':
>> net/ipv6/ip6_fib.c:1073:9: error: implicit declaration of function 'fib6_remove_gc_list' [-Werror=implicit-function-declaration]
1073 | fib6_remove_gc_list(rt);
| ^~~~~~~~~~~~~~~~~~~
net/ipv6/ip6_fib.c: In function 'fib6_add_rt2node':
>> net/ipv6/ip6_fib.c:1136:41: error: implicit declaration of function 'fib6_may_remove_gc_list' [-Werror=implicit-function-declaration]
1136 | fib6_may_remove_gc_list(info->nl_net, iter);
| ^~~~~~~~~~~~~~~~~~~~~~~
>> net/ipv6/ip6_fib.c:1139:41: error: implicit declaration of function 'fib6_add_gc_list' [-Werror=implicit-function-declaration]
1139 | fib6_add_gc_list(iter);
| ^~~~~~~~~~~~~~~~
cc1: some warnings being treated as errors
--
net/ipv6/ndisc.c: In function 'ndisc_router_discovery':
>> net/ipv6/ndisc.c:1405:17: error: implicit declaration of function 'fib6_add_gc_list' [-Werror=implicit-function-declaration]
1405 | fib6_add_gc_list(rt);
| ^~~~~~~~~~~~~~~~
cc1: some warnings being treated as errors
vim +/fib6_add_gc_list +1282 net/ipv6/addrconf.c
5b84efecb7d939 Thomas Haller 2014-01-15 1262
5b84efecb7d939 Thomas Haller 2014-01-15 1263 static void
d0098e4c6b83e5 Hangbin Liu 2020-03-03 1264 cleanup_prefix_route(struct inet6_ifaddr *ifp, unsigned long expires,
d0098e4c6b83e5 Hangbin Liu 2020-03-03 1265 bool del_rt, bool del_peer)
5b84efecb7d939 Thomas Haller 2014-01-15 1266 {
5eb902b8e7193c Kui-Feng Lee 2024-02-08 1267 struct fib6_table *table;
93c2fb253d177a David Ahern 2018-04-18 1268 struct fib6_info *f6i;
5b84efecb7d939 Thomas Haller 2014-01-15 1269
d0098e4c6b83e5 Hangbin Liu 2020-03-03 1270 f6i = addrconf_get_prefix_route(del_peer ? &ifp->peer_addr : &ifp->addr,
d0098e4c6b83e5 Hangbin Liu 2020-03-03 1271 ifp->prefix_len,
2b2450ca4a2d9d David Ahern 2019-03-27 1272 ifp->idev->dev, 0, RTF_DEFAULT, true);
93c2fb253d177a David Ahern 2018-04-18 1273 if (f6i) {
5b84efecb7d939 Thomas Haller 2014-01-15 1274 if (del_rt)
11dd74b338bf83 Roopa Prabhu 2020-04-27 1275 ip6_del_rt(dev_net(ifp->idev->dev), f6i, false);
5b84efecb7d939 Thomas Haller 2014-01-15 1276 else {
5eb902b8e7193c Kui-Feng Lee 2024-02-08 1277 if (!(f6i->fib6_flags & RTF_EXPIRES)) {
5eb902b8e7193c Kui-Feng Lee 2024-02-08 1278 table = f6i->fib6_table;
5eb902b8e7193c Kui-Feng Lee 2024-02-08 1279 spin_lock_bh(&table->tb6_lock);
5eb902b8e7193c Kui-Feng Lee 2024-02-08 1280
93c2fb253d177a David Ahern 2018-04-18 1281 fib6_set_expires(f6i, expires);
5eb902b8e7193c Kui-Feng Lee 2024-02-08 @1282 fib6_add_gc_list(f6i);
5eb902b8e7193c Kui-Feng Lee 2024-02-08 1283
5eb902b8e7193c Kui-Feng Lee 2024-02-08 1284 spin_unlock_bh(&table->tb6_lock);
5eb902b8e7193c Kui-Feng Lee 2024-02-08 1285 }
93c2fb253d177a David Ahern 2018-04-18 1286 fib6_info_release(f6i);
5b84efecb7d939 Thomas Haller 2014-01-15 1287 }
5b84efecb7d939 Thomas Haller 2014-01-15 1288 }
5b84efecb7d939 Thomas Haller 2014-01-15 1289 }
5b84efecb7d939 Thomas Haller 2014-01-15 1290
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH v2 net 2/2] ipv6: Don't remove permanent routes with exceptions from tb6_gc_hlist.
2026-03-08 3:22 ` [PATCH v2 net 2/2] ipv6: Don't remove permanent routes with exceptions from tb6_gc_hlist Kuniyuki Iwashima
2026-03-08 13:02 ` kernel test robot
@ 2026-03-08 14:50 ` kernel test robot
2026-03-08 18:58 ` Kuniyuki Iwashima
1 sibling, 1 reply; 6+ messages in thread
From: kernel test robot @ 2026-03-08 14:50 UTC (permalink / raw)
To: Kuniyuki Iwashima, David Ahern, David S . Miller, Eric Dumazet,
Jakub Kicinski, Paolo Abeni
Cc: llvm, oe-kbuild-all, Kui-Feng Lee, Xin Long, Simon Horman,
Kuniyuki Iwashima, netdev
Hi Kuniyuki,
kernel test robot noticed the following build errors:
[auto build test ERROR on net/main]
url: https://github.com/intel-lab-lkp/linux/commits/Kuniyuki-Iwashima/ipv6-Remove-permanent-routes-from-tb6_gc_hlist-when-all-exceptions-expire/20260308-113030
base: net/main
patch link: https://lore.kernel.org/r/20260308032304.1841198-3-kuniyu%40google.com
patch subject: [PATCH v2 net 2/2] ipv6: Don't remove permanent routes with exceptions from tb6_gc_hlist.
config: sparc64-allmodconfig (https://download.01.org/0day-ci/archive/20260308/202603082250.0lR88YW6-lkp@intel.com/config)
compiler: clang version 23.0.0git (https://github.com/llvm/llvm-project c32caeec8158d634bb71ab8911a6031248b9fc47)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260308/202603082250.0lR88YW6-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202603082250.0lR88YW6-lkp@intel.com/
All errors (new ones prefixed by >>):
>> net/ipv6/addrconf.c:1282:5: error: call to undeclared function 'fib6_add_gc_list'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
1282 | fib6_add_gc_list(f6i);
| ^
net/ipv6/addrconf.c:2862:6: error: call to undeclared function 'fib6_add_gc_list'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
2862 | fib6_add_gc_list(rt);
| ^
>> net/ipv6/addrconf.c:2865:6: error: call to undeclared function 'fib6_may_remove_gc_list'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
2865 | fib6_may_remove_gc_list(net, rt);
| ^
net/ipv6/addrconf.c:4843:4: error: call to undeclared function 'fib6_may_remove_gc_list'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
4843 | fib6_may_remove_gc_list(net, f6i);
| ^
net/ipv6/addrconf.c:4846:4: error: call to undeclared function 'fib6_add_gc_list'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
4846 | fib6_add_gc_list(f6i);
| ^
5 errors generated.
--
>> net/ipv6/route.c:1036:4: error: call to undeclared function 'fib6_may_remove_gc_list'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
1036 | fib6_may_remove_gc_list(net, rt);
| ^
>> net/ipv6/route.c:1039:4: error: call to undeclared function 'fib6_add_gc_list'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
1039 | fib6_add_gc_list(rt);
| ^
net/ipv6/route.c:1786:3: error: call to undeclared function 'fib6_add_gc_list'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
1786 | fib6_add_gc_list(f6i);
| ^
3 errors generated.
--
>> net/ipv6/ip6_fib.c:1073:2: error: call to undeclared function 'fib6_remove_gc_list'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
1073 | fib6_remove_gc_list(rt);
| ^
>> net/ipv6/ip6_fib.c:1136:6: error: call to undeclared function 'fib6_may_remove_gc_list'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
1136 | fib6_may_remove_gc_list(info->nl_net, iter);
| ^
>> net/ipv6/ip6_fib.c:1139:6: error: call to undeclared function 'fib6_add_gc_list'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
1139 | fib6_add_gc_list(iter);
| ^
net/ipv6/ip6_fib.c:1546:4: error: call to undeclared function 'fib6_add_gc_list'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
1546 | fib6_add_gc_list(rt);
| ^
net/ipv6/ip6_fib.c:2360:3: error: call to undeclared function 'fib6_remove_gc_list'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
2360 | fib6_remove_gc_list(rt);
| ^
5 errors generated.
--
>> net/ipv6/ndisc.c:1405:3: error: call to undeclared function 'fib6_add_gc_list'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
1405 | fib6_add_gc_list(rt);
| ^
1 error generated.
vim +/fib6_add_gc_list +1282 net/ipv6/addrconf.c
5b84efecb7d939d Thomas Haller 2014-01-15 1262
5b84efecb7d939d Thomas Haller 2014-01-15 1263 static void
d0098e4c6b83e50 Hangbin Liu 2020-03-03 1264 cleanup_prefix_route(struct inet6_ifaddr *ifp, unsigned long expires,
d0098e4c6b83e50 Hangbin Liu 2020-03-03 1265 bool del_rt, bool del_peer)
5b84efecb7d939d Thomas Haller 2014-01-15 1266 {
5eb902b8e7193cd Kui-Feng Lee 2024-02-08 1267 struct fib6_table *table;
93c2fb253d177a0 David Ahern 2018-04-18 1268 struct fib6_info *f6i;
5b84efecb7d939d Thomas Haller 2014-01-15 1269
d0098e4c6b83e50 Hangbin Liu 2020-03-03 1270 f6i = addrconf_get_prefix_route(del_peer ? &ifp->peer_addr : &ifp->addr,
d0098e4c6b83e50 Hangbin Liu 2020-03-03 1271 ifp->prefix_len,
2b2450ca4a2d9d7 David Ahern 2019-03-27 1272 ifp->idev->dev, 0, RTF_DEFAULT, true);
93c2fb253d177a0 David Ahern 2018-04-18 1273 if (f6i) {
5b84efecb7d939d Thomas Haller 2014-01-15 1274 if (del_rt)
11dd74b338bf83f Roopa Prabhu 2020-04-27 1275 ip6_del_rt(dev_net(ifp->idev->dev), f6i, false);
5b84efecb7d939d Thomas Haller 2014-01-15 1276 else {
5eb902b8e7193cd Kui-Feng Lee 2024-02-08 1277 if (!(f6i->fib6_flags & RTF_EXPIRES)) {
5eb902b8e7193cd Kui-Feng Lee 2024-02-08 1278 table = f6i->fib6_table;
5eb902b8e7193cd Kui-Feng Lee 2024-02-08 1279 spin_lock_bh(&table->tb6_lock);
5eb902b8e7193cd Kui-Feng Lee 2024-02-08 1280
93c2fb253d177a0 David Ahern 2018-04-18 1281 fib6_set_expires(f6i, expires);
5eb902b8e7193cd Kui-Feng Lee 2024-02-08 @1282 fib6_add_gc_list(f6i);
5eb902b8e7193cd Kui-Feng Lee 2024-02-08 1283
5eb902b8e7193cd Kui-Feng Lee 2024-02-08 1284 spin_unlock_bh(&table->tb6_lock);
5eb902b8e7193cd Kui-Feng Lee 2024-02-08 1285 }
93c2fb253d177a0 David Ahern 2018-04-18 1286 fib6_info_release(f6i);
5b84efecb7d939d Thomas Haller 2014-01-15 1287 }
5b84efecb7d939d Thomas Haller 2014-01-15 1288 }
5b84efecb7d939d Thomas Haller 2014-01-15 1289 }
5b84efecb7d939d Thomas Haller 2014-01-15 1290
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH v2 net 2/2] ipv6: Don't remove permanent routes with exceptions from tb6_gc_hlist.
2026-03-08 14:50 ` kernel test robot
@ 2026-03-08 18:58 ` Kuniyuki Iwashima
0 siblings, 0 replies; 6+ messages in thread
From: Kuniyuki Iwashima @ 2026-03-08 18:58 UTC (permalink / raw)
To: kernel test robot
Cc: David Ahern, David S . Miller, Eric Dumazet, Jakub Kicinski,
Paolo Abeni, llvm, oe-kbuild-all, Kui-Feng Lee, Xin Long,
Simon Horman, netdev
On Sun, Mar 8, 2026 at 7:50 AM kernel test robot <lkp@intel.com> wrote:
>
> Hi Kuniyuki,
>
> kernel test robot noticed the following build errors:
>
> [auto build test ERROR on net/main]
>
> url: https://github.com/intel-lab-lkp/linux/commits/Kuniyuki-Iwashima/ipv6-Remove-permanent-routes-from-tb6_gc_hlist-when-all-exceptions-expire/20260308-113030
> base: net/main
> patch link: https://lore.kernel.org/r/20260308032304.1841198-3-kuniyu%40google.com
> patch subject: [PATCH v2 net 2/2] ipv6: Don't remove permanent routes with exceptions from tb6_gc_hlist.
> config: sparc64-allmodconfig (https://download.01.org/0day-ci/archive/20260308/202603082250.0lR88YW6-lkp@intel.com/config)
> compiler: clang version 23.0.0git (https://github.com/llvm/llvm-project c32caeec8158d634bb71ab8911a6031248b9fc47)
> reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260308/202603082250.0lR88YW6-lkp@intel.com/reproduce)
>
> If you fix the issue in a separate patch/commit (i.e. not just a new version of
> the same patch/commit), kindly add following tags
> | Reported-by: kernel test robot <lkp@intel.com>
> | Closes: https://lore.kernel.org/oe-kbuild-all/202603082250.0lR88YW6-lkp@intel.com/
>
> All errors (new ones prefixed by >>):
>
> >> net/ipv6/addrconf.c:1282:5: error: call to undeclared function 'fib6_add_gc_list'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
> 1282 | fib6_add_gc_list(f6i);
Ugh, apparently I should've used IS_ENABLE()...
Will fix it.
Sorry for noise !
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2026-03-08 18:58 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-03-08 3:22 [PATCH v2 net 0/2] ipv6: Fix two GC issues with permanent routes Kuniyuki Iwashima
2026-03-08 3:22 ` [PATCH v2 net 1/2] ipv6: Remove permanent routes from tb6_gc_hlist when all exceptions expire Kuniyuki Iwashima
2026-03-08 3:22 ` [PATCH v2 net 2/2] ipv6: Don't remove permanent routes with exceptions from tb6_gc_hlist Kuniyuki Iwashima
2026-03-08 13:02 ` kernel test robot
2026-03-08 14:50 ` kernel test robot
2026-03-08 18:58 ` Kuniyuki Iwashima
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox