Subject: linux-next: build failure after merge of the net-next tree

From: Stephen Rothwell <[email-masked]>
Date: Mon, 12 Apr 2021 15:04:16 +1000

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 <command-line>:
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 <[email-masked]>
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 <[email-masked]>
---
 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