Hi all, After merging the net-next tree, today's linux-next build (x86_64 allmodconfig) failed like this: In file included from include/asm-generic/bug.h:20, from arch/x86/include/asm/bug.h:93, from include/linux/bug.h:5, from include/linux/mmdebug.h:5, from include/linux/gfp.h:5, from include/linux/umh.h:4, from include/linux/kmod.h:9, from net/bridge/netfilter/ebtables.c:14: net/bridge/netfilter/ebtables.c: In function '__ebt_find_table': net/bridge/netfilter/ebtables.c:1248:33: error: 'struct netns_xt' has no member named 'tables' 1248 | list_for_each_entry(t, &net->xt.tables[NFPROTO_BRIDGE], list) { | ^ include/linux/kernel.h:708:26: note: in definition of macro 'container_of' 708 | void *__mptr = (void *)(ptr); \ | ^~~ include/linux/list.h:522:2: note: in expansion of macro 'list_entry' 522 | list_entry((ptr)->next, type, member) | ^~~~~~~~~~ include/linux/list.h:628:13: note: in expansion of macro 'list_first_entry' 628 | for (pos = list_first_entry(head, typeof(*pos), member); \ | ^~~~~~~~~~~~~~~~ net/bridge/netfilter/ebtables.c:1248:2: note: in expansion of macro 'list_for_each_entry' 1248 | list_for_each_entry(t, &net->xt.tables[NFPROTO_BRIDGE], list) { | ^~~~~~~~~~~~~~~~~~~ In file included from : net/bridge/netfilter/ebtables.c:1248:33: error: 'struct netns_xt' has no member named 'tables' 1248 | list_for_each_entry(t, &net->xt.tables[NFPROTO_BRIDGE], list) { | ^ include/linux/compiler_types.h:300:9: note: in definition of macro '__compiletime_assert' 300 | if (!(condition)) \ | ^~~~~~~~~ include/linux/compiler_types.h:320:2: note: in expansion of macro '_compiletime_assert' 320 | _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__) | ^~~~~~~~~~~~~~~~~~~ include/linux/build_bug.h:39:37: note: in expansion of macro 'compiletime_assert' 39 | #define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg) | ^~~~~~~~~~~~~~~~~~ include/linux/kernel.h:709:2: note: in expansion of macro 'BUILD_BUG_ON_MSG' 709 | BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \ | ^~~~~~~~~~~~~~~~ include/linux/kernel.h:709:20: note: in expansion of macro '__same_type' 709 | BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \ | ^~~~~~~~~~~ include/linux/list.h:511:2: note: in expansion of macro 'container_of' 511 | container_of(ptr, type, member) | ^~~~~~~~~~~~ include/linux/list.h:522:2: note: in expansion of macro 'list_entry' 522 | list_entry((ptr)->next, type, member) | ^~~~~~~~~~ include/linux/list.h:628:13: note: in expansion of macro 'list_first_entry' 628 | for (pos = list_first_entry(head, typeof(*pos), member); \ | ^~~~~~~~~~~~~~~~ net/bridge/netfilter/ebtables.c:1248:2: note: in expansion of macro 'list_for_each_entry' 1248 | list_for_each_entry(t, &net->xt.tables[NFPROTO_BRIDGE], list) { | ^~~~~~~~~~~~~~~~~~~ net/bridge/netfilter/ebtables.c:1248:33: error: 'struct netns_xt' has no member named 'tables' 1248 | list_for_each_entry(t, &net->xt.tables[NFPROTO_BRIDGE], list) { | ^ include/linux/compiler_types.h:300:9: note: in definition of macro '__compiletime_assert' 300 | if (!(condition)) \ | ^~~~~~~~~ include/linux/compiler_types.h:320:2: note: in expansion of macro '_compiletime_assert' 320 | _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__) | ^~~~~~~~~~~~~~~~~~~ include/linux/build_bug.h:39:37: note: in expansion of macro 'compiletime_assert' 39 | #define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg) | ^~~~~~~~~~~~~~~~~~ include/linux/kernel.h:709:2: note: in expansion of macro 'BUILD_BUG_ON_MSG' 709 | BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \ | ^~~~~~~~~~~~~~~~ include/linux/kernel.h:710:6: note: in expansion of macro '__same_type' 710 | !__same_type(*(ptr), void), \ | ^~~~~~~~~~~ include/linux/list.h:511:2: note: in expansion of macro 'container_of' 511 | container_of(ptr, type, member) | ^~~~~~~~~~~~ include/linux/list.h:522:2: note: in expansion of macro 'list_entry' 522 | list_entry((ptr)->next, type, member) | ^~~~~~~~~~ include/linux/list.h:628:13: note: in expansion of macro 'list_first_entry' 628 | for (pos = list_first_entry(head, typeof(*pos), member); \ | ^~~~~~~~~~~~~~~~ net/bridge/netfilter/ebtables.c:1248:2: note: in expansion of macro 'list_for_each_entry' 1248 | list_for_each_entry(t, &net->xt.tables[NFPROTO_BRIDGE], list) { | ^~~~~~~~~~~~~~~~~~~ In file included from include/linux/preempt.h:11, from include/linux/spinlock.h:51, from include/linux/mmzone.h:8, from include/linux/gfp.h:6, from include/linux/umh.h:4, from include/linux/kmod.h:9, from net/bridge/netfilter/ebtables.c:14: net/bridge/netfilter/ebtables.c:1248:33: error: 'struct netns_xt' has no member named 'tables' 1248 | list_for_each_entry(t, &net->xt.tables[NFPROTO_BRIDGE], list) { | ^ include/linux/list.h:619:20: note: in definition of macro 'list_entry_is_head' 619 | (&pos->member == (head)) | ^~~~ net/bridge/netfilter/ebtables.c:1248:2: note: in expansion of macro 'list_for_each_entry' 1248 | list_for_each_entry(t, &net->xt.tables[NFPROTO_BRIDGE], list) { | ^~~~~~~~~~~~~~~~~~~ Caused by commit 5b53951cfc85 ("netfilter: ebtables: use net_generic infra") interacting with commit 7ee3c61dcd28 ("netfilter: bridge: add pre_exit hooks for ebtable unregistration") from the netfilter tree. I have applied the following merge fix patch for today: From: Stephen Rothwell Date: Mon, 12 Apr 2021 14:58:20 +1000 Subject: [PATCH] merger fix for "netfilter: bridge: add pre_exit hooks for ebtable unregistration" Signed-off-by: Stephen Rothwell --- net/bridge/netfilter/ebtables.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/net/bridge/netfilter/ebtables.c b/net/bridge/netfilter/ebtables.c index bbc46149bbb2..96d789c8d1c7 100644 --- a/net/bridge/netfilter/ebtables.c +++ b/net/bridge/netfilter/ebtables.c @@ -1241,11 +1241,12 @@ int ebt_register_table(struct net *net, const struct ebt_table *input_table, static struct ebt_table *__ebt_find_table(struct net *net, const char *name) { + struct ebt_pernet *ebt_net = net_generic(net, ebt_pernet_id); struct ebt_table *t; mutex_lock(&ebt_mutex); - list_for_each_entry(t, &net->xt.tables[NFPROTO_BRIDGE], list) { + list_for_each_entry(t, &ebt_net->tables, list) { if (strcmp(t->name, name) == 0) { mutex_unlock(&ebt_mutex); return t; -- 2.30.2 -- Cheers, Stephen Rothwell