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 <[email protected]>
:::::: CC: Pablo Neira Ayuso <[email protected]>
---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation
.config.gz
Description: application/gzip
