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 <fw@xxxxxxxxx> :::::: CC: Pablo Neira Ayuso <pablo@xxxxxxxxxxxxx> --- 0-DAY kernel test infrastructure Open Source Technology Center https://lists.01.org/pipermail/kbuild-all Intel Corporation
Attachment:
.config.gz
Description: application/gzip