public inbox for netdev@vger.kernel.org
 help / color / mirror / Atom feed
* [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