* [PATCH v1 net 0/2] ipv6: Fix two GC issues with permanent routes
@ 2026-03-07 2:46 Kuniyuki Iwashima
2026-03-07 2:46 ` [PATCH v1 net 1/2] ipv6: Remove permanent routes from tb6_gc_hlist when all exceptions expire Kuniyuki Iwashima
2026-03-07 2:46 ` [PATCH v1 net 2/2] ipv6: Don't remove permanent routes with exceptions from tb6_gc_hlist Kuniyuki Iwashima
0 siblings, 2 replies; 8+ messages in thread
From: Kuniyuki Iwashima @ 2026-03-07 2:46 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.
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 | 17 ++++++++++++++++-
net/ipv6/addrconf.c | 4 ++--
net/ipv6/ip6_fib.c | 15 +++++++++++++--
net/ipv6/route.c | 2 +-
4 files changed, 32 insertions(+), 6 deletions(-)
--
2.53.0.473.g4a7958ca14-goog
^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH v1 net 1/2] ipv6: Remove permanent routes from tb6_gc_hlist when all exceptions expire.
2026-03-07 2:46 [PATCH v1 net 0/2] ipv6: Fix two GC issues with permanent routes Kuniyuki Iwashima
@ 2026-03-07 2:46 ` Kuniyuki Iwashima
2026-03-07 2:46 ` [PATCH v1 net 2/2] ipv6: Don't remove permanent routes with exceptions from tb6_gc_hlist Kuniyuki Iwashima
1 sibling, 0 replies; 8+ messages in thread
From: Kuniyuki Iwashima @ 2026-03-07 2:46 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] 8+ messages in thread
* [PATCH v1 net 2/2] ipv6: Don't remove permanent routes with exceptions from tb6_gc_hlist.
2026-03-07 2:46 [PATCH v1 net 0/2] ipv6: Fix two GC issues with permanent routes Kuniyuki Iwashima
2026-03-07 2:46 ` [PATCH v1 net 1/2] ipv6: Remove permanent routes from tb6_gc_hlist when all exceptions expire Kuniyuki Iwashima
@ 2026-03-07 2:46 ` Kuniyuki Iwashima
2026-03-07 11:58 ` kernel test robot
` (3 more replies)
1 sibling, 4 replies; 8+ messages in thread
From: Kuniyuki Iwashima @ 2026-03-07 2:46 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>
---
include/net/ip6_fib.h | 17 ++++++++++++++++-
net/ipv6/addrconf.c | 4 ++--
net/ipv6/ip6_fib.c | 6 +++---
net/ipv6/route.c | 2 +-
4 files changed, 22 insertions(+), 7 deletions(-)
diff --git a/include/net/ip6_fib.h b/include/net/ip6_fib.h
index 88b0dd4d8e09..188494d1b509 100644
--- a/include/net/ip6_fib.h
+++ b/include/net/ip6_fib.h
@@ -507,8 +507,9 @@ 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);
@@ -545,6 +546,20 @@ 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);
+}
+
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] 8+ messages in thread
* Re: [PATCH v1 net 2/2] ipv6: Don't remove permanent routes with exceptions from tb6_gc_hlist.
2026-03-07 2:46 ` [PATCH v1 net 2/2] ipv6: Don't remove permanent routes with exceptions from tb6_gc_hlist Kuniyuki Iwashima
@ 2026-03-07 11:58 ` kernel test robot
2026-03-07 12:44 ` kernel test robot
` (2 subsequent siblings)
3 siblings, 0 replies; 8+ messages in thread
From: kernel test robot @ 2026-03-07 11:58 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 warnings:
[auto build test WARNING 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/20260307-104803
base: net/main
patch link: https://lore.kernel.org/r/20260307024709.718395-3-kuniyu%40google.com
patch subject: [PATCH v1 net 2/2] ipv6: Don't remove permanent routes with exceptions from tb6_gc_hlist.
config: openrisc-defconfig (https://download.01.org/0day-ci/archive/20260307/202603071918.kDLKvFsA-lkp@intel.com/config)
compiler: or1k-linux-gcc (GCC) 15.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260307/202603071918.kDLKvFsA-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/202603071918.kDLKvFsA-lkp@intel.com/
All warnings (new ones prefixed by >>):
36 | compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long long), \
| ^~~~~~~~~~~~~~~~~~
include/asm-generic/rwonce.h:36:28: note: in expansion of macro '__native_word'
36 | compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long long), \
| ^~~~~~~~~~~~~
include/asm-generic/rwonce.h:49:9: note: in expansion of macro 'compiletime_assert_rwonce_type'
49 | compiletime_assert_rwonce_type(x); \
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/net/ip6_fib.h:557:27: note: in expansion of macro 'READ_ONCE'
557 | gc_args.timeout = READ_ONCE(net->ipv6.sysctl.ip6_rt_gc_interval),
| ^~~~~~~~~
include/net/ip6_fib.h:557:42: error: 'struct net' has no member named 'ipv6'; did you mean 'ipv4'?
557 | gc_args.timeout = READ_ONCE(net->ipv6.sysctl.ip6_rt_gc_interval),
| ^~~~
include/linux/compiler_types.h:686:23: note: in definition of macro '__compiletime_assert'
686 | if (!(condition)) \
| ^~~~~~~~~
include/linux/compiler_types.h:706:9: note: in expansion of macro '_compiletime_assert'
706 | _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
| ^~~~~~~~~~~~~~~~~~~
include/asm-generic/rwonce.h:36:9: note: in expansion of macro 'compiletime_assert'
36 | compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long long), \
| ^~~~~~~~~~~~~~~~~~
include/asm-generic/rwonce.h:36:28: note: in expansion of macro '__native_word'
36 | compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long long), \
| ^~~~~~~~~~~~~
include/asm-generic/rwonce.h:49:9: note: in expansion of macro 'compiletime_assert_rwonce_type'
49 | compiletime_assert_rwonce_type(x); \
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/net/ip6_fib.h:557:27: note: in expansion of macro 'READ_ONCE'
557 | gc_args.timeout = READ_ONCE(net->ipv6.sysctl.ip6_rt_gc_interval),
| ^~~~~~~~~
include/net/ip6_fib.h:557:42: error: 'struct net' has no member named 'ipv6'; did you mean 'ipv4'?
557 | gc_args.timeout = READ_ONCE(net->ipv6.sysctl.ip6_rt_gc_interval),
| ^~~~
include/linux/compiler_types.h:686:23: note: in definition of macro '__compiletime_assert'
686 | if (!(condition)) \
| ^~~~~~~~~
include/linux/compiler_types.h:706:9: note: in expansion of macro '_compiletime_assert'
706 | _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
| ^~~~~~~~~~~~~~~~~~~
include/asm-generic/rwonce.h:36:9: note: in expansion of macro 'compiletime_assert'
36 | compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long long), \
| ^~~~~~~~~~~~~~~~~~
include/asm-generic/rwonce.h:36:28: note: in expansion of macro '__native_word'
36 | compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long long), \
| ^~~~~~~~~~~~~
include/asm-generic/rwonce.h:49:9: note: in expansion of macro 'compiletime_assert_rwonce_type'
49 | compiletime_assert_rwonce_type(x); \
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/net/ip6_fib.h:557:27: note: in expansion of macro 'READ_ONCE'
557 | gc_args.timeout = READ_ONCE(net->ipv6.sysctl.ip6_rt_gc_interval),
| ^~~~~~~~~
include/net/ip6_fib.h:557:42: error: 'struct net' has no member named 'ipv6'; did you mean 'ipv4'?
557 | gc_args.timeout = READ_ONCE(net->ipv6.sysctl.ip6_rt_gc_interval),
| ^~~~
include/linux/compiler_types.h:686:23: note: in definition of macro '__compiletime_assert'
686 | if (!(condition)) \
| ^~~~~~~~~
include/linux/compiler_types.h:706:9: note: in expansion of macro '_compiletime_assert'
706 | _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
| ^~~~~~~~~~~~~~~~~~~
include/asm-generic/rwonce.h:36:9: note: in expansion of macro 'compiletime_assert'
36 | compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long long), \
| ^~~~~~~~~~~~~~~~~~
include/asm-generic/rwonce.h:49:9: note: in expansion of macro 'compiletime_assert_rwonce_type'
49 | compiletime_assert_rwonce_type(x); \
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/net/ip6_fib.h:557:27: note: in expansion of macro 'READ_ONCE'
557 | gc_args.timeout = READ_ONCE(net->ipv6.sysctl.ip6_rt_gc_interval),
| ^~~~~~~~~
include/net/ip6_fib.h:557:42: error: 'struct net' has no member named 'ipv6'; did you mean 'ipv4'?
557 | gc_args.timeout = READ_ONCE(net->ipv6.sysctl.ip6_rt_gc_interval),
| ^~~~
include/linux/compiler_types.h:642:53: note: in definition of macro '__unqual_scalar_typeof'
642 | #define __unqual_scalar_typeof(x) __typeof_unqual__(x)
| ^
include/asm-generic/rwonce.h:50:9: note: in expansion of macro '__READ_ONCE'
50 | __READ_ONCE(x); \
| ^~~~~~~~~~~
include/net/ip6_fib.h:557:27: note: in expansion of macro 'READ_ONCE'
557 | gc_args.timeout = READ_ONCE(net->ipv6.sysctl.ip6_rt_gc_interval),
| ^~~~~~~~~
In file included from ./arch/openrisc/include/generated/asm/rwonce.h:1,
from include/linux/compiler.h:372,
from include/linux/build_bug.h:5,
from include/linux/bits.h:30,
from include/linux/capability.h:18,
from net/core/sock.c:89:
include/net/ip6_fib.h:557:42: error: 'struct net' has no member named 'ipv6'; did you mean 'ipv4'?
557 | gc_args.timeout = READ_ONCE(net->ipv6.sysctl.ip6_rt_gc_interval),
| ^~~~
include/asm-generic/rwonce.h:44:73: note: in definition of macro '__READ_ONCE'
44 | #define __READ_ONCE(x) (*(const volatile __unqual_scalar_typeof(x) *)&(x))
| ^
include/net/ip6_fib.h:557:27: note: in expansion of macro 'READ_ONCE'
557 | gc_args.timeout = READ_ONCE(net->ipv6.sysctl.ip6_rt_gc_interval),
| ^~~~~~~~~
In file included from include/net/xfrm.h:26,
from net/core/sock.c:133:
>> include/net/ip6_fib.h:557:73: warning: left-hand operand of comma expression has no effect [-Wunused-value]
557 | gc_args.timeout = READ_ONCE(net->ipv6.sysctl.ip6_rt_gc_interval),
| ^
vim +557 include/net/ip6_fib.h
548
549 static inline void fib6_may_remove_gc_list(struct net *net,
550 struct fib6_info *f6i)
551 {
552 struct fib6_gc_args gc_args;
553
554 if (hlist_unhashed(&f6i->gc_link))
555 return;
556
> 557 gc_args.timeout = READ_ONCE(net->ipv6.sysctl.ip6_rt_gc_interval),
558 gc_args.more = 0,
559
560 fib6_age_exceptions(f6i, &gc_args, jiffies);
561 }
562
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH v1 net 2/2] ipv6: Don't remove permanent routes with exceptions from tb6_gc_hlist.
2026-03-07 2:46 ` [PATCH v1 net 2/2] ipv6: Don't remove permanent routes with exceptions from tb6_gc_hlist Kuniyuki Iwashima
2026-03-07 11:58 ` kernel test robot
@ 2026-03-07 12:44 ` kernel test robot
2026-03-07 13:16 ` kernel test robot
2026-03-07 13:37 ` kernel test robot
3 siblings, 0 replies; 8+ messages in thread
From: kernel test robot @ 2026-03-07 12:44 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/20260307-104803
base: net/main
patch link: https://lore.kernel.org/r/20260307024709.718395-3-kuniyu%40google.com
patch subject: [PATCH v1 net 2/2] ipv6: Don't remove permanent routes with exceptions from tb6_gc_hlist.
config: x86_64-kexec (https://download.01.org/0day-ci/archive/20260307/202603071301.jcZkyoAP-lkp@intel.com/config)
compiler: clang version 20.1.8 (https://github.com/llvm/llvm-project 87f0227cb60147a26a1eeb4fb06e3b505e9c7261)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260307/202603071301.jcZkyoAP-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/202603071301.jcZkyoAP-lkp@intel.com/
All errors (new ones prefixed by >>):
In file included from drivers/scsi/cxgbi/libcxgbi.c:28:
In file included from include/net/ip6_route.h:7:
>> include/net/ip6_fib.h:557:35: error: no member named 'ipv6' in 'struct net'
557 | gc_args.timeout = READ_ONCE(net->ipv6.sysctl.ip6_rt_gc_interval),
| ~~~ ^
include/asm-generic/rwonce.h:49:33: note: expanded from macro 'READ_ONCE'
49 | compiletime_assert_rwonce_type(x); \
| ^
include/asm-generic/rwonce.h:36:35: note: expanded from macro 'compiletime_assert_rwonce_type'
36 | compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long long), \
| ^
include/linux/compiler_types.h:667:10: note: expanded from macro '__native_word'
667 | (sizeof(t) == sizeof(char) || sizeof(t) == sizeof(short) || \
| ^
include/linux/compiler_types.h:706:22: note: expanded from macro 'compiletime_assert'
706 | _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
| ^~~~~~~~~
include/linux/compiler_types.h:694:23: note: expanded from macro '_compiletime_assert'
694 | __compiletime_assert(condition, msg, prefix, suffix)
| ^~~~~~~~~
include/linux/compiler_types.h:686:9: note: expanded from macro '__compiletime_assert'
686 | if (!(condition)) \
| ^~~~~~~~~
In file included from drivers/scsi/cxgbi/libcxgbi.c:28:
In file included from include/net/ip6_route.h:7:
>> include/net/ip6_fib.h:557:35: error: no member named 'ipv6' in 'struct net'
557 | gc_args.timeout = READ_ONCE(net->ipv6.sysctl.ip6_rt_gc_interval),
| ~~~ ^
include/asm-generic/rwonce.h:49:33: note: expanded from macro 'READ_ONCE'
49 | compiletime_assert_rwonce_type(x); \
| ^
include/asm-generic/rwonce.h:36:35: note: expanded from macro 'compiletime_assert_rwonce_type'
36 | compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long long), \
| ^
include/linux/compiler_types.h:667:39: note: expanded from macro '__native_word'
667 | (sizeof(t) == sizeof(char) || sizeof(t) == sizeof(short) || \
| ^
include/linux/compiler_types.h:706:22: note: expanded from macro 'compiletime_assert'
706 | _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
| ^~~~~~~~~
include/linux/compiler_types.h:694:23: note: expanded from macro '_compiletime_assert'
694 | __compiletime_assert(condition, msg, prefix, suffix)
| ^~~~~~~~~
include/linux/compiler_types.h:686:9: note: expanded from macro '__compiletime_assert'
686 | if (!(condition)) \
| ^~~~~~~~~
In file included from drivers/scsi/cxgbi/libcxgbi.c:28:
In file included from include/net/ip6_route.h:7:
>> include/net/ip6_fib.h:557:35: error: no member named 'ipv6' in 'struct net'
557 | gc_args.timeout = READ_ONCE(net->ipv6.sysctl.ip6_rt_gc_interval),
| ~~~ ^
include/asm-generic/rwonce.h:49:33: note: expanded from macro 'READ_ONCE'
49 | compiletime_assert_rwonce_type(x); \
| ^
include/asm-generic/rwonce.h:36:35: note: expanded from macro 'compiletime_assert_rwonce_type'
36 | compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long long), \
| ^
include/linux/compiler_types.h:668:10: note: expanded from macro '__native_word'
668 | sizeof(t) == sizeof(int) || sizeof(t) == sizeof(long))
| ^
include/linux/compiler_types.h:706:22: note: expanded from macro 'compiletime_assert'
706 | _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
| ^~~~~~~~~
include/linux/compiler_types.h:694:23: note: expanded from macro '_compiletime_assert'
694 | __compiletime_assert(condition, msg, prefix, suffix)
| ^~~~~~~~~
include/linux/compiler_types.h:686:9: note: expanded from macro '__compiletime_assert'
686 | if (!(condition)) \
| ^~~~~~~~~
In file included from drivers/scsi/cxgbi/libcxgbi.c:28:
In file included from include/net/ip6_route.h:7:
>> include/net/ip6_fib.h:557:35: error: no member named 'ipv6' in 'struct net'
557 | gc_args.timeout = READ_ONCE(net->ipv6.sysctl.ip6_rt_gc_interval),
| ~~~ ^
include/asm-generic/rwonce.h:49:33: note: expanded from macro 'READ_ONCE'
49 | compiletime_assert_rwonce_type(x); \
| ^
include/asm-generic/rwonce.h:36:35: note: expanded from macro 'compiletime_assert_rwonce_type'
36 | compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long long), \
| ^
include/linux/compiler_types.h:668:38: note: expanded from macro '__native_word'
668 | sizeof(t) == sizeof(int) || sizeof(t) == sizeof(long))
| ^
include/linux/compiler_types.h:706:22: note: expanded from macro 'compiletime_assert'
706 | _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
| ^~~~~~~~~
include/linux/compiler_types.h:694:23: note: expanded from macro '_compiletime_assert'
694 | __compiletime_assert(condition, msg, prefix, suffix)
| ^~~~~~~~~
include/linux/compiler_types.h:686:9: note: expanded from macro '__compiletime_assert'
686 | if (!(condition)) \
| ^~~~~~~~~
In file included from drivers/scsi/cxgbi/libcxgbi.c:28:
In file included from include/net/ip6_route.h:7:
>> include/net/ip6_fib.h:557:35: error: no member named 'ipv6' in 'struct net'
557 | gc_args.timeout = READ_ONCE(net->ipv6.sysctl.ip6_rt_gc_interval),
| ~~~ ^
include/asm-generic/rwonce.h:49:33: note: expanded from macro 'READ_ONCE'
49 | compiletime_assert_rwonce_type(x); \
| ^
include/asm-generic/rwonce.h:36:48: note: expanded from macro 'compiletime_assert_rwonce_type'
36 | compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long long), \
| ^
include/linux/compiler_types.h:706:22: note: expanded from macro 'compiletime_assert'
706 | _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
| ^~~~~~~~~
include/linux/compiler_types.h:694:23: note: expanded from macro '_compiletime_assert'
694 | __compiletime_assert(condition, msg, prefix, suffix)
| ^~~~~~~~~
include/linux/compiler_types.h:686:9: note: expanded from macro '__compiletime_assert'
686 | if (!(condition)) \
| ^~~~~~~~~
In file included from drivers/scsi/cxgbi/libcxgbi.c:28:
In file included from include/net/ip6_route.h:7:
>> include/net/ip6_fib.h:557:35: error: no member named 'ipv6' in 'struct net'
557 | gc_args.timeout = READ_ONCE(net->ipv6.sysctl.ip6_rt_gc_interval),
| ~~~ ^
include/asm-generic/rwonce.h:50:14: note: expanded from macro 'READ_ONCE'
50 | __READ_ONCE(x); \
| ^
include/asm-generic/rwonce.h:44:65: note: expanded from macro '__READ_ONCE'
44 | #define __READ_ONCE(x) (*(const volatile __unqual_scalar_typeof(x) *)&(x))
| ^
include/linux/compiler_types.h:642:53: note: expanded from macro '__unqual_scalar_typeof'
642 | #define __unqual_scalar_typeof(x) __typeof_unqual__(x)
| ^
In file included from drivers/scsi/cxgbi/libcxgbi.c:28:
In file included from include/net/ip6_route.h:7:
>> include/net/ip6_fib.h:557:35: error: no member named 'ipv6' in 'struct net'
557 | gc_args.timeout = READ_ONCE(net->ipv6.sysctl.ip6_rt_gc_interval),
| ~~~ ^
include/asm-generic/rwonce.h:50:14: note: expanded from macro 'READ_ONCE'
50 | __READ_ONCE(x); \
| ^
include/asm-generic/rwonce.h:44:72: note: expanded from macro '__READ_ONCE'
44 | #define __READ_ONCE(x) (*(const volatile __unqual_scalar_typeof(x) *)&(x))
| ^
7 errors generated.
--
In file included from drivers/scsi/cxgbi/cxgb4i/cxgb4i.c:20:
In file included from include/net/tcp.h:45:
In file included from include/net/xfrm.h:26:
>> include/net/ip6_fib.h:557:35: error: no member named 'ipv6' in 'struct net'
557 | gc_args.timeout = READ_ONCE(net->ipv6.sysctl.ip6_rt_gc_interval),
| ~~~ ^
include/asm-generic/rwonce.h:49:33: note: expanded from macro 'READ_ONCE'
49 | compiletime_assert_rwonce_type(x); \
| ^
include/asm-generic/rwonce.h:36:35: note: expanded from macro 'compiletime_assert_rwonce_type'
36 | compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long long), \
| ^
include/linux/compiler_types.h:667:10: note: expanded from macro '__native_word'
667 | (sizeof(t) == sizeof(char) || sizeof(t) == sizeof(short) || \
| ^
include/linux/compiler_types.h:706:22: note: expanded from macro 'compiletime_assert'
706 | _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
| ^~~~~~~~~
include/linux/compiler_types.h:694:23: note: expanded from macro '_compiletime_assert'
694 | __compiletime_assert(condition, msg, prefix, suffix)
| ^~~~~~~~~
include/linux/compiler_types.h:686:9: note: expanded from macro '__compiletime_assert'
686 | if (!(condition)) \
| ^~~~~~~~~
In file included from drivers/scsi/cxgbi/cxgb4i/cxgb4i.c:20:
In file included from include/net/tcp.h:45:
In file included from include/net/xfrm.h:26:
>> include/net/ip6_fib.h:557:35: error: no member named 'ipv6' in 'struct net'
557 | gc_args.timeout = READ_ONCE(net->ipv6.sysctl.ip6_rt_gc_interval),
| ~~~ ^
include/asm-generic/rwonce.h:49:33: note: expanded from macro 'READ_ONCE'
49 | compiletime_assert_rwonce_type(x); \
| ^
include/asm-generic/rwonce.h:36:35: note: expanded from macro 'compiletime_assert_rwonce_type'
36 | compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long long), \
| ^
include/linux/compiler_types.h:667:39: note: expanded from macro '__native_word'
667 | (sizeof(t) == sizeof(char) || sizeof(t) == sizeof(short) || \
| ^
include/linux/compiler_types.h:706:22: note: expanded from macro 'compiletime_assert'
706 | _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
| ^~~~~~~~~
include/linux/compiler_types.h:694:23: note: expanded from macro '_compiletime_assert'
694 | __compiletime_assert(condition, msg, prefix, suffix)
| ^~~~~~~~~
include/linux/compiler_types.h:686:9: note: expanded from macro '__compiletime_assert'
686 | if (!(condition)) \
| ^~~~~~~~~
In file included from drivers/scsi/cxgbi/cxgb4i/cxgb4i.c:20:
In file included from include/net/tcp.h:45:
In file included from include/net/xfrm.h:26:
>> include/net/ip6_fib.h:557:35: error: no member named 'ipv6' in 'struct net'
557 | gc_args.timeout = READ_ONCE(net->ipv6.sysctl.ip6_rt_gc_interval),
| ~~~ ^
include/asm-generic/rwonce.h:49:33: note: expanded from macro 'READ_ONCE'
49 | compiletime_assert_rwonce_type(x); \
| ^
include/asm-generic/rwonce.h:36:35: note: expanded from macro 'compiletime_assert_rwonce_type'
36 | compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long long), \
| ^
include/linux/compiler_types.h:668:10: note: expanded from macro '__native_word'
668 | sizeof(t) == sizeof(int) || sizeof(t) == sizeof(long))
| ^
include/linux/compiler_types.h:706:22: note: expanded from macro 'compiletime_assert'
706 | _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
| ^~~~~~~~~
include/linux/compiler_types.h:694:23: note: expanded from macro '_compiletime_assert'
694 | __compiletime_assert(condition, msg, prefix, suffix)
| ^~~~~~~~~
include/linux/compiler_types.h:686:9: note: expanded from macro '__compiletime_assert'
686 | if (!(condition)) \
| ^~~~~~~~~
In file included from drivers/scsi/cxgbi/cxgb4i/cxgb4i.c:20:
In file included from include/net/tcp.h:45:
In file included from include/net/xfrm.h:26:
>> include/net/ip6_fib.h:557:35: error: no member named 'ipv6' in 'struct net'
557 | gc_args.timeout = READ_ONCE(net->ipv6.sysctl.ip6_rt_gc_interval),
| ~~~ ^
include/asm-generic/rwonce.h:49:33: note: expanded from macro 'READ_ONCE'
49 | compiletime_assert_rwonce_type(x); \
| ^
include/asm-generic/rwonce.h:36:35: note: expanded from macro 'compiletime_assert_rwonce_type'
36 | compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long long), \
| ^
include/linux/compiler_types.h:668:38: note: expanded from macro '__native_word'
668 | sizeof(t) == sizeof(int) || sizeof(t) == sizeof(long))
| ^
include/linux/compiler_types.h:706:22: note: expanded from macro 'compiletime_assert'
706 | _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
| ^~~~~~~~~
include/linux/compiler_types.h:694:23: note: expanded from macro '_compiletime_assert'
694 | __compiletime_assert(condition, msg, prefix, suffix)
| ^~~~~~~~~
include/linux/compiler_types.h:686:9: note: expanded from macro '__compiletime_assert'
686 | if (!(condition)) \
| ^~~~~~~~~
In file included from drivers/scsi/cxgbi/cxgb4i/cxgb4i.c:20:
In file included from include/net/tcp.h:45:
In file included from include/net/xfrm.h:26:
>> include/net/ip6_fib.h:557:35: error: no member named 'ipv6' in 'struct net'
557 | gc_args.timeout = READ_ONCE(net->ipv6.sysctl.ip6_rt_gc_interval),
| ~~~ ^
include/asm-generic/rwonce.h:49:33: note: expanded from macro 'READ_ONCE'
49 | compiletime_assert_rwonce_type(x); \
| ^
include/asm-generic/rwonce.h:36:48: note: expanded from macro 'compiletime_assert_rwonce_type'
36 | compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long long), \
| ^
include/linux/compiler_types.h:706:22: note: expanded from macro 'compiletime_assert'
706 | _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
| ^~~~~~~~~
include/linux/compiler_types.h:694:23: note: expanded from macro '_compiletime_assert'
694 | __compiletime_assert(condition, msg, prefix, suffix)
| ^~~~~~~~~
include/linux/compiler_types.h:686:9: note: expanded from macro '__compiletime_assert'
686 | if (!(condition)) \
| ^~~~~~~~~
In file included from drivers/scsi/cxgbi/cxgb4i/cxgb4i.c:20:
In file included from include/net/tcp.h:45:
In file included from include/net/xfrm.h:26:
>> include/net/ip6_fib.h:557:35: error: no member named 'ipv6' in 'struct net'
557 | gc_args.timeout = READ_ONCE(net->ipv6.sysctl.ip6_rt_gc_interval),
| ~~~ ^
include/asm-generic/rwonce.h:50:14: note: expanded from macro 'READ_ONCE'
50 | __READ_ONCE(x); \
| ^
include/asm-generic/rwonce.h:44:65: note: expanded from macro '__READ_ONCE'
44 | #define __READ_ONCE(x) (*(const volatile __unqual_scalar_typeof(x) *)&(x))
| ^
include/linux/compiler_types.h:642:53: note: expanded from macro '__unqual_scalar_typeof'
642 | #define __unqual_scalar_typeof(x) __typeof_unqual__(x)
| ^
In file included from drivers/scsi/cxgbi/cxgb4i/cxgb4i.c:20:
In file included from include/net/tcp.h:45:
In file included from include/net/xfrm.h:26:
>> include/net/ip6_fib.h:557:35: error: no member named 'ipv6' in 'struct net'
557 | gc_args.timeout = READ_ONCE(net->ipv6.sysctl.ip6_rt_gc_interval),
| ~~~ ^
include/asm-generic/rwonce.h:50:14: note: expanded from macro 'READ_ONCE'
50 | __READ_ONCE(x); \
| ^
include/asm-generic/rwonce.h:44:72: note: expanded from macro '__READ_ONCE'
44 | #define __READ_ONCE(x) (*(const volatile __unqual_scalar_typeof(x) *)&(x))
| ^
drivers/scsi/cxgbi/cxgb4i/cxgb4i.c:995:44: warning: variable 'size6' set but not used [-Wunused-but-set-variable]
995 | int t4 = is_t4(lldi->adapter_type), size, size6;
| ^
drivers/scsi/cxgbi/cxgb4i/cxgb4i.c:1776:21: warning: variable 'size6' set but not used [-Wunused-but-set-variable]
1776 | unsigned int size, size6;
| ^
2 warnings and 7 errors generated.
--
In file included from cxgb4i/cxgb4i.c:20:
In file included from include/net/tcp.h:45:
In file included from include/net/xfrm.h:26:
>> include/net/ip6_fib.h:557:35: error: no member named 'ipv6' in 'struct net'
557 | gc_args.timeout = READ_ONCE(net->ipv6.sysctl.ip6_rt_gc_interval),
| ~~~ ^
include/asm-generic/rwonce.h:49:33: note: expanded from macro 'READ_ONCE'
49 | compiletime_assert_rwonce_type(x); \
| ^
include/asm-generic/rwonce.h:36:35: note: expanded from macro 'compiletime_assert_rwonce_type'
36 | compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long long), \
| ^
include/linux/compiler_types.h:667:10: note: expanded from macro '__native_word'
667 | (sizeof(t) == sizeof(char) || sizeof(t) == sizeof(short) || \
| ^
include/linux/compiler_types.h:706:22: note: expanded from macro 'compiletime_assert'
706 | _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
| ^~~~~~~~~
include/linux/compiler_types.h:694:23: note: expanded from macro '_compiletime_assert'
694 | __compiletime_assert(condition, msg, prefix, suffix)
| ^~~~~~~~~
include/linux/compiler_types.h:686:9: note: expanded from macro '__compiletime_assert'
686 | if (!(condition)) \
| ^~~~~~~~~
In file included from cxgb4i/cxgb4i.c:20:
In file included from include/net/tcp.h:45:
In file included from include/net/xfrm.h:26:
>> include/net/ip6_fib.h:557:35: error: no member named 'ipv6' in 'struct net'
557 | gc_args.timeout = READ_ONCE(net->ipv6.sysctl.ip6_rt_gc_interval),
| ~~~ ^
include/asm-generic/rwonce.h:49:33: note: expanded from macro 'READ_ONCE'
49 | compiletime_assert_rwonce_type(x); \
| ^
include/asm-generic/rwonce.h:36:35: note: expanded from macro 'compiletime_assert_rwonce_type'
36 | compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long long), \
| ^
include/linux/compiler_types.h:667:39: note: expanded from macro '__native_word'
667 | (sizeof(t) == sizeof(char) || sizeof(t) == sizeof(short) || \
| ^
include/linux/compiler_types.h:706:22: note: expanded from macro 'compiletime_assert'
706 | _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
| ^~~~~~~~~
include/linux/compiler_types.h:694:23: note: expanded from macro '_compiletime_assert'
694 | __compiletime_assert(condition, msg, prefix, suffix)
| ^~~~~~~~~
include/linux/compiler_types.h:686:9: note: expanded from macro '__compiletime_assert'
686 | if (!(condition)) \
| ^~~~~~~~~
In file included from cxgb4i/cxgb4i.c:20:
In file included from include/net/tcp.h:45:
In file included from include/net/xfrm.h:26:
>> include/net/ip6_fib.h:557:35: error: no member named 'ipv6' in 'struct net'
557 | gc_args.timeout = READ_ONCE(net->ipv6.sysctl.ip6_rt_gc_interval),
| ~~~ ^
include/asm-generic/rwonce.h:49:33: note: expanded from macro 'READ_ONCE'
49 | compiletime_assert_rwonce_type(x); \
| ^
include/asm-generic/rwonce.h:36:35: note: expanded from macro 'compiletime_assert_rwonce_type'
36 | compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long long), \
| ^
include/linux/compiler_types.h:668:10: note: expanded from macro '__native_word'
668 | sizeof(t) == sizeof(int) || sizeof(t) == sizeof(long))
| ^
include/linux/compiler_types.h:706:22: note: expanded from macro 'compiletime_assert'
706 | _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
| ^~~~~~~~~
include/linux/compiler_types.h:694:23: note: expanded from macro '_compiletime_assert'
694 | __compiletime_assert(condition, msg, prefix, suffix)
| ^~~~~~~~~
include/linux/compiler_types.h:686:9: note: expanded from macro '__compiletime_assert'
686 | if (!(condition)) \
| ^~~~~~~~~
In file included from cxgb4i/cxgb4i.c:20:
In file included from include/net/tcp.h:45:
In file included from include/net/xfrm.h:26:
>> include/net/ip6_fib.h:557:35: error: no member named 'ipv6' in 'struct net'
557 | gc_args.timeout = READ_ONCE(net->ipv6.sysctl.ip6_rt_gc_interval),
| ~~~ ^
include/asm-generic/rwonce.h:49:33: note: expanded from macro 'READ_ONCE'
49 | compiletime_assert_rwonce_type(x); \
| ^
include/asm-generic/rwonce.h:36:35: note: expanded from macro 'compiletime_assert_rwonce_type'
36 | compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long long), \
| ^
include/linux/compiler_types.h:668:38: note: expanded from macro '__native_word'
668 | sizeof(t) == sizeof(int) || sizeof(t) == sizeof(long))
| ^
include/linux/compiler_types.h:706:22: note: expanded from macro 'compiletime_assert'
706 | _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
| ^~~~~~~~~
include/linux/compiler_types.h:694:23: note: expanded from macro '_compiletime_assert'
694 | __compiletime_assert(condition, msg, prefix, suffix)
| ^~~~~~~~~
include/linux/compiler_types.h:686:9: note: expanded from macro '__compiletime_assert'
686 | if (!(condition)) \
| ^~~~~~~~~
In file included from cxgb4i/cxgb4i.c:20:
In file included from include/net/tcp.h:45:
In file included from include/net/xfrm.h:26:
>> include/net/ip6_fib.h:557:35: error: no member named 'ipv6' in 'struct net'
557 | gc_args.timeout = READ_ONCE(net->ipv6.sysctl.ip6_rt_gc_interval),
| ~~~ ^
include/asm-generic/rwonce.h:49:33: note: expanded from macro 'READ_ONCE'
49 | compiletime_assert_rwonce_type(x); \
| ^
include/asm-generic/rwonce.h:36:48: note: expanded from macro 'compiletime_assert_rwonce_type'
36 | compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long long), \
| ^
include/linux/compiler_types.h:706:22: note: expanded from macro 'compiletime_assert'
706 | _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
| ^~~~~~~~~
include/linux/compiler_types.h:694:23: note: expanded from macro '_compiletime_assert'
694 | __compiletime_assert(condition, msg, prefix, suffix)
| ^~~~~~~~~
include/linux/compiler_types.h:686:9: note: expanded from macro '__compiletime_assert'
686 | if (!(condition)) \
| ^~~~~~~~~
In file included from cxgb4i/cxgb4i.c:20:
In file included from include/net/tcp.h:45:
In file included from include/net/xfrm.h:26:
>> include/net/ip6_fib.h:557:35: error: no member named 'ipv6' in 'struct net'
557 | gc_args.timeout = READ_ONCE(net->ipv6.sysctl.ip6_rt_gc_interval),
| ~~~ ^
include/asm-generic/rwonce.h:50:14: note: expanded from macro 'READ_ONCE'
50 | __READ_ONCE(x); \
| ^
include/asm-generic/rwonce.h:44:65: note: expanded from macro '__READ_ONCE'
44 | #define __READ_ONCE(x) (*(const volatile __unqual_scalar_typeof(x) *)&(x))
| ^
include/linux/compiler_types.h:642:53: note: expanded from macro '__unqual_scalar_typeof'
642 | #define __unqual_scalar_typeof(x) __typeof_unqual__(x)
| ^
In file included from cxgb4i/cxgb4i.c:20:
In file included from include/net/tcp.h:45:
In file included from include/net/xfrm.h:26:
>> include/net/ip6_fib.h:557:35: error: no member named 'ipv6' in 'struct net'
557 | gc_args.timeout = READ_ONCE(net->ipv6.sysctl.ip6_rt_gc_interval),
| ~~~ ^
include/asm-generic/rwonce.h:50:14: note: expanded from macro 'READ_ONCE'
50 | __READ_ONCE(x); \
| ^
include/asm-generic/rwonce.h:44:72: note: expanded from macro '__READ_ONCE'
44 | #define __READ_ONCE(x) (*(const volatile __unqual_scalar_typeof(x) *)&(x))
| ^
cxgb4i/cxgb4i.c:995:44: warning: variable 'size6' set but not used [-Wunused-but-set-variable]
995 | int t4 = is_t4(lldi->adapter_type), size, size6;
| ^
cxgb4i/cxgb4i.c:1776:21: warning: variable 'size6' set but not used [-Wunused-but-set-variable]
1776 | unsigned int size, size6;
| ^
2 warnings and 7 errors generated.
vim +557 include/net/ip6_fib.h
548
549 static inline void fib6_may_remove_gc_list(struct net *net,
550 struct fib6_info *f6i)
551 {
552 struct fib6_gc_args gc_args;
553
554 if (hlist_unhashed(&f6i->gc_link))
555 return;
556
> 557 gc_args.timeout = READ_ONCE(net->ipv6.sysctl.ip6_rt_gc_interval),
558 gc_args.more = 0,
559
560 fib6_age_exceptions(f6i, &gc_args, jiffies);
561 }
562
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH v1 net 2/2] ipv6: Don't remove permanent routes with exceptions from tb6_gc_hlist.
2026-03-07 2:46 ` [PATCH v1 net 2/2] ipv6: Don't remove permanent routes with exceptions from tb6_gc_hlist Kuniyuki Iwashima
2026-03-07 11:58 ` kernel test robot
2026-03-07 12:44 ` kernel test robot
@ 2026-03-07 13:16 ` kernel test robot
2026-03-07 13:37 ` kernel test robot
3 siblings, 0 replies; 8+ messages in thread
From: kernel test robot @ 2026-03-07 13:16 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/20260307-104803
base: net/main
patch link: https://lore.kernel.org/r/20260307024709.718395-3-kuniyu%40google.com
patch subject: [PATCH v1 net 2/2] ipv6: Don't remove permanent routes with exceptions from tb6_gc_hlist.
config: openrisc-defconfig (https://download.01.org/0day-ci/archive/20260307/202603072110.3PSz4SUZ-lkp@intel.com/config)
compiler: or1k-linux-gcc (GCC) 15.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260307/202603072110.3PSz4SUZ-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/202603072110.3PSz4SUZ-lkp@intel.com/
All errors (new ones prefixed by >>):
In file included from <command-line>:
include/net/ip6_fib.h: In function 'fib6_may_remove_gc_list':
>> include/net/ip6_fib.h:557:42: error: 'struct net' has no member named 'ipv6'; did you mean 'ipv4'?
557 | gc_args.timeout = READ_ONCE(net->ipv6.sysctl.ip6_rt_gc_interval),
| ^~~~
include/linux/compiler_types.h:686:23: note: in definition of macro '__compiletime_assert'
686 | if (!(condition)) \
| ^~~~~~~~~
include/linux/compiler_types.h:706:9: note: in expansion of macro '_compiletime_assert'
706 | _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
| ^~~~~~~~~~~~~~~~~~~
include/asm-generic/rwonce.h:36:9: note: in expansion of macro 'compiletime_assert'
36 | compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long long), \
| ^~~~~~~~~~~~~~~~~~
include/asm-generic/rwonce.h:36:28: note: in expansion of macro '__native_word'
36 | compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long long), \
| ^~~~~~~~~~~~~
include/asm-generic/rwonce.h:49:9: note: in expansion of macro 'compiletime_assert_rwonce_type'
49 | compiletime_assert_rwonce_type(x); \
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/net/ip6_fib.h:557:27: note: in expansion of macro 'READ_ONCE'
557 | gc_args.timeout = READ_ONCE(net->ipv6.sysctl.ip6_rt_gc_interval),
| ^~~~~~~~~
>> include/net/ip6_fib.h:557:42: error: 'struct net' has no member named 'ipv6'; did you mean 'ipv4'?
557 | gc_args.timeout = READ_ONCE(net->ipv6.sysctl.ip6_rt_gc_interval),
| ^~~~
include/linux/compiler_types.h:686:23: note: in definition of macro '__compiletime_assert'
686 | if (!(condition)) \
| ^~~~~~~~~
include/linux/compiler_types.h:706:9: note: in expansion of macro '_compiletime_assert'
706 | _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
| ^~~~~~~~~~~~~~~~~~~
include/asm-generic/rwonce.h:36:9: note: in expansion of macro 'compiletime_assert'
36 | compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long long), \
| ^~~~~~~~~~~~~~~~~~
include/asm-generic/rwonce.h:36:28: note: in expansion of macro '__native_word'
36 | compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long long), \
| ^~~~~~~~~~~~~
include/asm-generic/rwonce.h:49:9: note: in expansion of macro 'compiletime_assert_rwonce_type'
49 | compiletime_assert_rwonce_type(x); \
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/net/ip6_fib.h:557:27: note: in expansion of macro 'READ_ONCE'
557 | gc_args.timeout = READ_ONCE(net->ipv6.sysctl.ip6_rt_gc_interval),
| ^~~~~~~~~
>> include/net/ip6_fib.h:557:42: error: 'struct net' has no member named 'ipv6'; did you mean 'ipv4'?
557 | gc_args.timeout = READ_ONCE(net->ipv6.sysctl.ip6_rt_gc_interval),
| ^~~~
include/linux/compiler_types.h:686:23: note: in definition of macro '__compiletime_assert'
686 | if (!(condition)) \
| ^~~~~~~~~
include/linux/compiler_types.h:706:9: note: in expansion of macro '_compiletime_assert'
706 | _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
| ^~~~~~~~~~~~~~~~~~~
include/asm-generic/rwonce.h:36:9: note: in expansion of macro 'compiletime_assert'
36 | compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long long), \
| ^~~~~~~~~~~~~~~~~~
include/asm-generic/rwonce.h:36:28: note: in expansion of macro '__native_word'
36 | compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long long), \
| ^~~~~~~~~~~~~
include/asm-generic/rwonce.h:49:9: note: in expansion of macro 'compiletime_assert_rwonce_type'
49 | compiletime_assert_rwonce_type(x); \
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/net/ip6_fib.h:557:27: note: in expansion of macro 'READ_ONCE'
557 | gc_args.timeout = READ_ONCE(net->ipv6.sysctl.ip6_rt_gc_interval),
| ^~~~~~~~~
>> include/net/ip6_fib.h:557:42: error: 'struct net' has no member named 'ipv6'; did you mean 'ipv4'?
557 | gc_args.timeout = READ_ONCE(net->ipv6.sysctl.ip6_rt_gc_interval),
| ^~~~
include/linux/compiler_types.h:686:23: note: in definition of macro '__compiletime_assert'
686 | if (!(condition)) \
| ^~~~~~~~~
include/linux/compiler_types.h:706:9: note: in expansion of macro '_compiletime_assert'
706 | _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
| ^~~~~~~~~~~~~~~~~~~
include/asm-generic/rwonce.h:36:9: note: in expansion of macro 'compiletime_assert'
36 | compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long long), \
| ^~~~~~~~~~~~~~~~~~
include/asm-generic/rwonce.h:36:28: note: in expansion of macro '__native_word'
36 | compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long long), \
| ^~~~~~~~~~~~~
include/asm-generic/rwonce.h:49:9: note: in expansion of macro 'compiletime_assert_rwonce_type'
49 | compiletime_assert_rwonce_type(x); \
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/net/ip6_fib.h:557:27: note: in expansion of macro 'READ_ONCE'
557 | gc_args.timeout = READ_ONCE(net->ipv6.sysctl.ip6_rt_gc_interval),
| ^~~~~~~~~
>> include/net/ip6_fib.h:557:42: error: 'struct net' has no member named 'ipv6'; did you mean 'ipv4'?
557 | gc_args.timeout = READ_ONCE(net->ipv6.sysctl.ip6_rt_gc_interval),
| ^~~~
include/linux/compiler_types.h:686:23: note: in definition of macro '__compiletime_assert'
686 | if (!(condition)) \
| ^~~~~~~~~
include/linux/compiler_types.h:706:9: note: in expansion of macro '_compiletime_assert'
706 | _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
| ^~~~~~~~~~~~~~~~~~~
include/asm-generic/rwonce.h:36:9: note: in expansion of macro 'compiletime_assert'
36 | compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long long), \
| ^~~~~~~~~~~~~~~~~~
include/asm-generic/rwonce.h:49:9: note: in expansion of macro 'compiletime_assert_rwonce_type'
49 | compiletime_assert_rwonce_type(x); \
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/net/ip6_fib.h:557:27: note: in expansion of macro 'READ_ONCE'
557 | gc_args.timeout = READ_ONCE(net->ipv6.sysctl.ip6_rt_gc_interval),
| ^~~~~~~~~
>> include/net/ip6_fib.h:557:42: error: 'struct net' has no member named 'ipv6'; did you mean 'ipv4'?
557 | gc_args.timeout = READ_ONCE(net->ipv6.sysctl.ip6_rt_gc_interval),
| ^~~~
include/linux/compiler_types.h:642:53: note: in definition of macro '__unqual_scalar_typeof'
642 | #define __unqual_scalar_typeof(x) __typeof_unqual__(x)
| ^
include/asm-generic/rwonce.h:50:9: note: in expansion of macro '__READ_ONCE'
50 | __READ_ONCE(x); \
| ^~~~~~~~~~~
include/net/ip6_fib.h:557:27: note: in expansion of macro 'READ_ONCE'
557 | gc_args.timeout = READ_ONCE(net->ipv6.sysctl.ip6_rt_gc_interval),
| ^~~~~~~~~
In file included from ./arch/openrisc/include/generated/asm/rwonce.h:1,
from include/linux/compiler.h:372,
from include/linux/build_bug.h:5,
from include/linux/bits.h:30,
from include/linux/capability.h:18,
from net/core/sock.c:89:
>> include/net/ip6_fib.h:557:42: error: 'struct net' has no member named 'ipv6'; did you mean 'ipv4'?
557 | gc_args.timeout = READ_ONCE(net->ipv6.sysctl.ip6_rt_gc_interval),
| ^~~~
include/asm-generic/rwonce.h:44:73: note: in definition of macro '__READ_ONCE'
44 | #define __READ_ONCE(x) (*(const volatile __unqual_scalar_typeof(x) *)&(x))
| ^
include/net/ip6_fib.h:557:27: note: in expansion of macro 'READ_ONCE'
557 | gc_args.timeout = READ_ONCE(net->ipv6.sysctl.ip6_rt_gc_interval),
| ^~~~~~~~~
In file included from include/net/xfrm.h:26,
from net/core/sock.c:133:
include/net/ip6_fib.h:557:73: warning: left-hand operand of comma expression has no effect [-Wunused-value]
557 | gc_args.timeout = READ_ONCE(net->ipv6.sysctl.ip6_rt_gc_interval),
| ^
vim +557 include/net/ip6_fib.h
548
549 static inline void fib6_may_remove_gc_list(struct net *net,
550 struct fib6_info *f6i)
551 {
552 struct fib6_gc_args gc_args;
553
554 if (hlist_unhashed(&f6i->gc_link))
555 return;
556
> 557 gc_args.timeout = READ_ONCE(net->ipv6.sysctl.ip6_rt_gc_interval),
558 gc_args.more = 0,
559
560 fib6_age_exceptions(f6i, &gc_args, jiffies);
561 }
562
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH v1 net 2/2] ipv6: Don't remove permanent routes with exceptions from tb6_gc_hlist.
2026-03-07 2:46 ` [PATCH v1 net 2/2] ipv6: Don't remove permanent routes with exceptions from tb6_gc_hlist Kuniyuki Iwashima
` (2 preceding siblings ...)
2026-03-07 13:16 ` kernel test robot
@ 2026-03-07 13:37 ` kernel test robot
2026-03-08 3:08 ` Kuniyuki Iwashima
3 siblings, 1 reply; 8+ messages in thread
From: kernel test robot @ 2026-03-07 13:37 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/20260307-104803
base: net/main
patch link: https://lore.kernel.org/r/20260307024709.718395-3-kuniyu%40google.com
patch subject: [PATCH v1 net 2/2] ipv6: Don't remove permanent routes with exceptions from tb6_gc_hlist.
config: powerpc-currituck_defconfig (https://download.01.org/0day-ci/archive/20260307/202603072124.nNhJgNnw-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/20260307/202603072124.nNhJgNnw-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/202603072124.nNhJgNnw-lkp@intel.com/
All errors (new ones prefixed by >>):
In file included from net/core/sock.c:133:
In file included from include/net/xfrm.h:26:
>> include/net/ip6_fib.h:557:35: error: no member named 'ipv6' in 'struct net'
557 | gc_args.timeout = READ_ONCE(net->ipv6.sysctl.ip6_rt_gc_interval),
| ~~~ ^
>> include/net/ip6_fib.h:557:35: error: no member named 'ipv6' in 'struct net'
557 | gc_args.timeout = READ_ONCE(net->ipv6.sysctl.ip6_rt_gc_interval),
| ~~~ ^
>> include/net/ip6_fib.h:557:35: error: no member named 'ipv6' in 'struct net'
557 | gc_args.timeout = READ_ONCE(net->ipv6.sysctl.ip6_rt_gc_interval),
| ~~~ ^
>> include/net/ip6_fib.h:557:35: error: no member named 'ipv6' in 'struct net'
557 | gc_args.timeout = READ_ONCE(net->ipv6.sysctl.ip6_rt_gc_interval),
| ~~~ ^
>> include/net/ip6_fib.h:557:35: error: no member named 'ipv6' in 'struct net'
557 | gc_args.timeout = READ_ONCE(net->ipv6.sysctl.ip6_rt_gc_interval),
| ~~~ ^
>> include/net/ip6_fib.h:557:35: error: no member named 'ipv6' in 'struct net'
557 | gc_args.timeout = READ_ONCE(net->ipv6.sysctl.ip6_rt_gc_interval),
| ~~~ ^
>> include/net/ip6_fib.h:557:35: error: no member named 'ipv6' in 'struct net'
557 | gc_args.timeout = READ_ONCE(net->ipv6.sysctl.ip6_rt_gc_interval),
| ~~~ ^
7 errors generated.
vim +557 include/net/ip6_fib.h
548
549 static inline void fib6_may_remove_gc_list(struct net *net,
550 struct fib6_info *f6i)
551 {
552 struct fib6_gc_args gc_args;
553
554 if (hlist_unhashed(&f6i->gc_link))
555 return;
556
> 557 gc_args.timeout = READ_ONCE(net->ipv6.sysctl.ip6_rt_gc_interval),
558 gc_args.more = 0,
559
560 fib6_age_exceptions(f6i, &gc_args, jiffies);
561 }
562
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH v1 net 2/2] ipv6: Don't remove permanent routes with exceptions from tb6_gc_hlist.
2026-03-07 13:37 ` kernel test robot
@ 2026-03-08 3:08 ` Kuniyuki Iwashima
0 siblings, 0 replies; 8+ messages in thread
From: Kuniyuki Iwashima @ 2026-03-08 3:08 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 Sat, Mar 7, 2026 at 5:38 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/20260307-104803
> base: net/main
> patch link: https://lore.kernel.org/r/20260307024709.718395-3-kuniyu%40google.com
> patch subject: [PATCH v1 net 2/2] ipv6: Don't remove permanent routes with exceptions from tb6_gc_hlist.
> config: powerpc-currituck_defconfig (https://download.01.org/0day-ci/archive/20260307/202603072124.nNhJgNnw-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/20260307/202603072124.nNhJgNnw-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/202603072124.nNhJgNnw-lkp@intel.com/
>
> All errors (new ones prefixed by >>):
>
> In file included from net/core/sock.c:133:
> In file included from include/net/xfrm.h:26:
> >> include/net/ip6_fib.h:557:35: error: no member named 'ipv6' in 'struct net'
> 557 | gc_args.timeout = READ_ONCE(net->ipv6.sysctl.ip6_rt_gc_interval),
> | ~~~ ^
Oops, I missed ip6_fib.h is included from many places.
I'll guard the GC functions with ifdef CONFIG_IPV6.
^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2026-03-08 3:08 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-03-07 2:46 [PATCH v1 net 0/2] ipv6: Fix two GC issues with permanent routes Kuniyuki Iwashima
2026-03-07 2:46 ` [PATCH v1 net 1/2] ipv6: Remove permanent routes from tb6_gc_hlist when all exceptions expire Kuniyuki Iwashima
2026-03-07 2:46 ` [PATCH v1 net 2/2] ipv6: Don't remove permanent routes with exceptions from tb6_gc_hlist Kuniyuki Iwashima
2026-03-07 11:58 ` kernel test robot
2026-03-07 12:44 ` kernel test robot
2026-03-07 13:16 ` kernel test robot
2026-03-07 13:37 ` kernel test robot
2026-03-08 3:08 ` Kuniyuki Iwashima
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox