tree:   https://git.kernel.org/pub/scm/linux/kernel/git/pablo/nf-next.git master
head:   bcbfcb63a93704140d66f49b6f7d783988f37b4e
commit: bcbfcb63a93704140d66f49b6f7d783988f37b4e [14/14] netfilter: reduce hook 
array sizes to what is needed
config: i386-randconfig-x002-201749 (attached as .config)
compiler: gcc-7 (Debian 7.2.0-12) 7.2.1 20171025
reproduce:
        git checkout bcbfcb63a93704140d66f49b6f7d783988f37b4e
        # save the attached .config to linux build tree
        make ARCH=i386 

All error/warnings (new ones prefixed by >>):

   In file included from include/linux/srcu.h:33:0,
                    from include/linux/notifier.h:16,
                    from include/linux/memory_hotplug.h:7,
                    from include/linux/mmzone.h:780,
                    from include/linux/gfp.h:6,
                    from include/linux/umh.h:4,
                    from include/linux/kmod.h:22,
                    from include/linux/module.h:13,
                    from net/bridge/br_netfilter_hooks.c:17:
   net/bridge/br_netfilter_hooks.c: In function 'br_nf_hook_thresh':
>> net/bridge/br_netfilter_hooks.c:994:30: error: 'struct netns_nf' has no 
>> member named 'hooks_bridge'; did you mean 'hooks_ipv4'?
     e = rcu_dereference(net->nf.hooks_bridge[hook]);
                                 ^
   include/linux/rcupdate.h:349:10: note: in definition of macro 
'__rcu_dereference_check'
     typeof(*p) *________p1 = (typeof(*p) *__force)lockless_dereference(p); \
             ^
   include/linux/rcupdate.h:545:28: note: in expansion of macro 
'rcu_dereference_check'
    #define rcu_dereference(p) rcu_dereference_check(p, 0)
                               ^~~~~~~~~~~~~~~~~~~~~
>> net/bridge/br_netfilter_hooks.c:994:6: note: in expansion of macro 
>> 'rcu_dereference'
     e = rcu_dereference(net->nf.hooks_bridge[hook]);
         ^~~~~~~~~~~~~~~
>> net/bridge/br_netfilter_hooks.c:994:30: error: 'struct netns_nf' has no 
>> member named 'hooks_bridge'; did you mean 'hooks_ipv4'?
     e = rcu_dereference(net->nf.hooks_bridge[hook]);
                                 ^
   include/linux/rcupdate.h:349:36: note: in definition of macro 
'__rcu_dereference_check'
     typeof(*p) *________p1 = (typeof(*p) *__force)lockless_dereference(p); \
                                       ^
   include/linux/rcupdate.h:545:28: note: in expansion of macro 
'rcu_dereference_check'
    #define rcu_dereference(p) rcu_dereference_check(p, 0)
                               ^~~~~~~~~~~~~~~~~~~~~
>> net/bridge/br_netfilter_hooks.c:994:6: note: in expansion of macro 
>> 'rcu_dereference'
     e = rcu_dereference(net->nf.hooks_bridge[hook]);
         ^~~~~~~~~~~~~~~
   In file included from include/uapi/linux/stddef.h:2:0,
                    from include/linux/stddef.h:5,
                    from include/uapi/linux/posix_types.h:5,
                    from include/uapi/linux/types.h:14,
                    from include/linux/types.h:6,
                    from include/linux/list.h:5,
                    from include/linux/module.h:9,
                    from net/bridge/br_netfilter_hooks.c:17:
>> net/bridge/br_netfilter_hooks.c:994:30: error: 'struct netns_nf' has no 
>> member named 'hooks_bridge'; did you mean 'hooks_ipv4'?
     e = rcu_dereference(net->nf.hooks_bridge[hook]);
                                 ^
   include/linux/compiler.h:622:9: note: in definition of macro 
'lockless_dereference'
     typeof(p) _________p1 = READ_ONCE(p); \
            ^
   include/linux/rcupdate.h:486:2: note: in expansion of macro 
'__rcu_dereference_check'
     __rcu_dereference_check((p), (c) || rcu_read_lock_held(), __rcu)
     ^~~~~~~~~~~~~~~~~~~~~~~
   include/linux/rcupdate.h:545:28: note: in expansion of macro 
'rcu_dereference_check'
    #define rcu_dereference(p) rcu_dereference_check(p, 0)
                               ^~~~~~~~~~~~~~~~~~~~~
>> net/bridge/br_netfilter_hooks.c:994:6: note: in expansion of macro 
>> 'rcu_dereference'
     e = rcu_dereference(net->nf.hooks_bridge[hook]);
         ^~~~~~~~~~~~~~~
   In file included from include/uapi/linux/stddef.h:2:0,
                    from include/linux/stddef.h:5,
                    from include/uapi/linux/posix_types.h:5,
                    from include/uapi/linux/types.h:14,
                    from include/linux/types.h:6,
                    from include/linux/list.h:5,
                    from include/linux/module.h:9,
                    from net/bridge/br_netfilter_hooks.c:17:
>> net/bridge/br_netfilter_hooks.c:994:30: error: 'struct netns_nf' has no 
>> member named 'hooks_bridge'; did you mean 'hooks_ipv4'?
     e = rcu_dereference(net->nf.hooks_bridge[hook]);
                                 ^
   include/linux/compiler.h:339:17: note: in definition of macro '__READ_ONCE'
     union { typeof(x) __val; char __c[1]; } __u;   \
                    ^
   include/linux/compiler.h:622:26: note: in expansion of macro 'READ_ONCE'
     typeof(p) _________p1 = READ_ONCE(p); \
                             ^~~~~~~~~
   include/linux/rcupdate.h:349:48: note: in expansion of macro 
'lockless_dereference'
     typeof(*p) *________p1 = (typeof(*p) *__force)lockless_dereference(p); \
                                                   ^~~~~~~~~~~~~~~~~~~~
   include/linux/rcupdate.h:486:2: note: in expansion of macro 
'__rcu_dereference_check'
     __rcu_dereference_check((p), (c) || rcu_read_lock_held(), __rcu)
     ^~~~~~~~~~~~~~~~~~~~~~~
   include/linux/rcupdate.h:545:28: note: in expansion of macro 
'rcu_dereference_check'
    #define rcu_dereference(p) rcu_dereference_check(p, 0)
                               ^~~~~~~~~~~~~~~~~~~~~
>> net/bridge/br_netfilter_hooks.c:994:6: note: in expansion of macro 
>> 'rcu_dereference'
     e = rcu_dereference(net->nf.hooks_bridge[hook]);
         ^~~~~~~~~~~~~~~
>> net/bridge/br_netfilter_hooks.c:994:30: error: 'struct netns_nf' has no 
>> member named 'hooks_bridge'; did you mean 'hooks_ipv4'?
     e = rcu_dereference(net->nf.hooks_bridge[hook]);
                                 ^
   include/linux/compiler.h:341:22: note: in definition of macro '__READ_ONCE'
      __read_once_size(&(x), __u.__c, sizeof(x));  \
                         ^
   include/linux/compiler.h:622:26: note: in expansion of macro 'READ_ONCE'
     typeof(p) _________p1 = READ_ONCE(p); \
                             ^~~~~~~~~
   include/linux/rcupdate.h:349:48: note: in expansion of macro 
'lockless_dereference'
     typeof(*p) *________p1 = (typeof(*p) *__force)lockless_dereference(p); \
                                                   ^~~~~~~~~~~~~~~~~~~~
   include/linux/rcupdate.h:486:2: note: in expansion of macro 
'__rcu_dereference_check'
     __rcu_dereference_check((p), (c) || rcu_read_lock_held(), __rcu)
     ^~~~~~~~~~~~~~~~~~~~~~~
   include/linux/rcupdate.h:545:28: note: in expansion of macro 
'rcu_dereference_check'
    #define rcu_dereference(p) rcu_dereference_check(p, 0)
                               ^~~~~~~~~~~~~~~~~~~~~
>> net/bridge/br_netfilter_hooks.c:994:6: note: in expansion of macro 
>> 'rcu_dereference'
     e = rcu_dereference(net->nf.hooks_bridge[hook]);
         ^~~~~~~~~~~~~~~
>> net/bridge/br_netfilter_hooks.c:994:30: error: 'struct netns_nf' has no 
>> member named 'hooks_bridge'; did you mean 'hooks_ipv4'?
     e = rcu_dereference(net->nf.hooks_bridge[hook]);
                                 ^
   include/linux/compiler.h:341:42: note: in definition of macro '__READ_ONCE'
      __read_once_size(&(x), __u.__c, sizeof(x));  \
                                             ^
   include/linux/compiler.h:622:26: note: in expansion of macro 'READ_ONCE'
     typeof(p) _________p1 = READ_ONCE(p); \
                             ^~~~~~~~~
   include/linux/rcupdate.h:349:48: note: in expansion of macro 
'lockless_dereference'
     typeof(*p) *________p1 = (typeof(*p) *__force)lockless_dereference(p); \
                                                   ^~~~~~~~~~~~~~~~~~~~
   include/linux/rcupdate.h:486:2: note: in expansion of macro 
'__rcu_dereference_check'
     __rcu_dereference_check((p), (c) || rcu_read_lock_held(), __rcu)
     ^~~~~~~~~~~~~~~~~~~~~~~
   include/linux/rcupdate.h:545:28: note: in expansion of macro 
'rcu_dereference_check'
    #define rcu_dereference(p) rcu_dereference_check(p, 0)
                               ^~~~~~~~~~~~~~~~~~~~~
>> net/bridge/br_netfilter_hooks.c:994:6: note: in expansion of macro 
>> 'rcu_dereference'
     e = rcu_dereference(net->nf.hooks_bridge[hook]);
         ^~~~~~~~~~~~~~~
>> net/bridge/br_netfilter_hooks.c:994:30: error: 'struct netns_nf' has no 
>> member named 'hooks_bridge'; did you mean 'hooks_ipv4'?
     e = rcu_dereference(net->nf.hooks_bridge[hook]);
                                 ^
   include/linux/compiler.h:343:30: note: in definition of macro '__READ_ONCE'
      __read_once_size_nocheck(&(x), __u.__c, sizeof(x)); \
                                 ^
   include/linux/compiler.h:622:26: note: in expansion of macro 'READ_ONCE'
     typeof(p) _________p1 = READ_ONCE(p); \
                             ^~~~~~~~~
   include/linux/rcupdate.h:349:48: note: in expansion of macro 
'lockless_dereference'
     typeof(*p) *________p1 = (typeof(*p) *__force)lockless_dereference(p); \
                                                   ^~~~~~~~~~~~~~~~~~~~
   include/linux/rcupdate.h:486:2: note: in expansion of macro 
'__rcu_dereference_check'
     __rcu_dereference_check((p), (c) || rcu_read_lock_held(), __rcu)
     ^~~~~~~~~~~~~~~~~~~~~~~
   include/linux/rcupdate.h:545:28: note: in expansion of macro 
'rcu_dereference_check'
    #define rcu_dereference(p) rcu_dereference_check(p, 0)
                               ^~~~~~~~~~~~~~~~~~~~~
>> net/bridge/br_netfilter_hooks.c:994:6: note: in expansion of macro 
>> 'rcu_dereference'
     e = rcu_dereference(net->nf.hooks_bridge[hook]);
         ^~~~~~~~~~~~~~~
>> net/bridge/br_netfilter_hooks.c:994:30: error: 'struct netns_nf' has no 
>> member named 'hooks_bridge'; did you mean 'hooks_ipv4'?
     e = rcu_dereference(net->nf.hooks_bridge[hook]);
                                 ^
   include/linux/compiler.h:343:50: note: in definition of macro '__READ_ONCE'
      __read_once_size_nocheck(&(x), __u.__c, sizeof(x)); \
                                                     ^
   include/linux/compiler.h:622:26: note: in expansion of macro 'READ_ONCE'
     typeof(p) _________p1 = READ_ONCE(p); \
                             ^~~~~~~~~
   include/linux/rcupdate.h:349:48: note: in expansion of macro 
'lockless_dereference'
     typeof(*p) *________p1 = (typeof(*p) *__force)lockless_dereference(p); \
                                                   ^~~~~~~~~~~~~~~~~~~~
   include/linux/rcupdate.h:486:2: note: in expansion of macro 
'__rcu_dereference_check'
     __rcu_dereference_check((p), (c) || rcu_read_lock_held(), __rcu)
     ^~~~~~~~~~~~~~~~~~~~~~~
   include/linux/rcupdate.h:545:28: note: in expansion of macro 
'rcu_dereference_check'
    #define rcu_dereference(p) rcu_dereference_check(p, 0)
                               ^~~~~~~~~~~~~~~~~~~~~
>> net/bridge/br_netfilter_hooks.c:994:6: note: in expansion of macro 
>> 'rcu_dereference'
     e = rcu_dereference(net->nf.hooks_bridge[hook]);
         ^~~~~~~~~~~~~~~
   In file included from include/uapi/linux/stddef.h:2:0,
                    from include/linux/stddef.h:5,
                    from include/uapi/linux/posix_types.h:5,
                    from include/uapi/linux/types.h:14,
                    from include/linux/types.h:6,
                    from include/linux/list.h:5,
                    from include/linux/module.h:9,
                    from net/bridge/br_netfilter_hooks.c:17:
>> net/bridge/br_netfilter_hooks.c:994:30: error: 'struct netns_nf' has no 
>> member named 'hooks_bridge'; did you mean 'hooks_ipv4'?
     e = rcu_dereference(net->nf.hooks_bridge[hook]);
                                 ^
   include/linux/compiler.h:623:11: note: in definition of macro 
'lockless_dereference'
     typeof(*(p)) *___typecheck_p __maybe_unused; \
              ^
   include/linux/rcupdate.h:486:2: note: in expansion of macro 
'__rcu_dereference_check'
     __rcu_dereference_check((p), (c) || rcu_read_lock_held(), __rcu)
     ^~~~~~~~~~~~~~~~~~~~~~~
   include/linux/rcupdate.h:545:28: note: in expansion of macro 
'rcu_dereference_check'
    #define rcu_dereference(p) rcu_dereference_check(p, 0)
                               ^~~~~~~~~~~~~~~~~~~~~
>> net/bridge/br_netfilter_hooks.c:994:6: note: in expansion of macro 
>> 'rcu_dereference'
     e = rcu_dereference(net->nf.hooks_bridge[hook]);
         ^~~~~~~~~~~~~~~
   In file included from include/linux/srcu.h:33:0,
                    from include/linux/notifier.h:16,
                    from include/linux/memory_hotplug.h:7,
                    from include/linux/mmzone.h:780,
                    from include/linux/gfp.h:6,
                    from include/linux/umh.h:4,
                    from include/linux/kmod.h:22,
                    from include/linux/module.h:13,
                    from net/bridge/br_netfilter_hooks.c:17:
>> net/bridge/br_netfilter_hooks.c:994:30: error: 'struct netns_nf' has no 
>> member named 'hooks_bridge'; did you mean 'hooks_ipv4'?
     e = rcu_dereference(net->nf.hooks_bridge[hook]);
                                 ^
   include/linux/rcupdate.h:352:12: note: in definition of macro 
'__rcu_dereference_check'
     ((typeof(*p) __force __kernel *)(________p1)); \
               ^
   include/linux/rcupdate.h:545:28: note: in expansion of macro 
'rcu_dereference_check'
    #define rcu_dereference(p) rcu_dereference_check(p, 0)
                               ^~~~~~~~~~~~~~~~~~~~~
>> net/bridge/br_netfilter_hooks.c:994:6: note: in expansion of macro 
>> 'rcu_dereference'
     e = rcu_dereference(net->nf.hooks_bridge[hook]);
         ^~~~~~~~~~~~~~~

vim +994 net/bridge/br_netfilter_hooks.c

5f6c253eb Florian Westphal  2016-02-25   975  
c5136b15e Florian Westphal  2016-09-21   976  /* recursively invokes 
nf_hook_slow (again), skipping already-called
c5136b15e Florian Westphal  2016-09-21   977   * hooks (< NF_BR_PRI_BRNF).
c5136b15e Florian Westphal  2016-09-21   978   *
c5136b15e Florian Westphal  2016-09-21   979   * Called with rcu read lock held.
c5136b15e Florian Westphal  2016-09-21   980   */
c5136b15e Florian Westphal  2016-09-21   981  int br_nf_hook_thresh(unsigned 
int hook, struct net *net,
c5136b15e Florian Westphal  2016-09-21   982                  struct sock *sk, 
struct sk_buff *skb,
c5136b15e Florian Westphal  2016-09-21   983                  struct net_device 
*indev,
c5136b15e Florian Westphal  2016-09-21   984                  struct net_device 
*outdev,
c5136b15e Florian Westphal  2016-09-21   985                  int 
(*okfn)(struct net *, struct sock *,
c5136b15e Florian Westphal  2016-09-21   986                              
struct sk_buff *))
c5136b15e Florian Westphal  2016-09-21   987  {
960632ece Aaron Conole      2017-08-24   988    const struct nf_hook_entries *e;
c5136b15e Florian Westphal  2016-09-21   989    struct nf_hook_state state;
960632ece Aaron Conole      2017-08-24   990    struct nf_hook_ops **ops;
960632ece Aaron Conole      2017-08-24   991    unsigned int i;
c5136b15e Florian Westphal  2016-09-21   992    int ret;
c5136b15e Florian Westphal  2016-09-21   993  
e02538c64 Florian Westphal  2017-12-03  @994    e = 
rcu_dereference(net->nf.hooks_bridge[hook]);
960632ece Aaron Conole      2017-08-24   995    if (!e)
c5136b15e Florian Westphal  2016-09-21   996            return okfn(net, sk, 
skb);
c5136b15e Florian Westphal  2016-09-21   997  
960632ece Aaron Conole      2017-08-24   998    ops = 
nf_hook_entries_get_hook_ops(e);
960632ece Aaron Conole      2017-08-24   999    for (i = 0; i < 
e->num_hook_entries &&
960632ece Aaron Conole      2017-08-24  1000          ops[i]->priority <= 
NF_BR_PRI_BRNF; i++)
960632ece Aaron Conole      2017-08-24  1001            ;
960632ece Aaron Conole      2017-08-24  1002  
01886bd91 Pablo Neira Ayuso 2016-11-03  1003    nf_hook_state_init(&state, 
hook, NFPROTO_BRIDGE, indev, outdev,
1610a73c4 Pablo Neira Ayuso 2016-11-03  1004                       sk, net, 
okfn);
c5136b15e Florian Westphal  2016-09-21  1005  
960632ece Aaron Conole      2017-08-24  1006    ret = nf_hook_slow(skb, &state, 
e, i);
c5136b15e Florian Westphal  2016-09-21  1007    if (ret == 1)
c5136b15e Florian Westphal  2016-09-21  1008            ret = okfn(net, sk, 
skb);
c5136b15e Florian Westphal  2016-09-21  1009  
c5136b15e Florian Westphal  2016-09-21  1010    return ret;
c5136b15e Florian Westphal  2016-09-21  1011  }
c5136b15e Florian Westphal  2016-09-21  1012  

:::::: The code at line 994 was first introduced by commit
:::::: e02538c6458b54c135cb8626c05e989b16550cb0 netfilter: reduce size of hook 
entry point locations

:::::: TO: Florian Westphal <f...@strlen.de>
:::::: CC: Pablo Neira Ayuso <pa...@netfilter.org>

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation

Attachment: .config.gz
Description: application/gzip

Reply via email to