Hi Pablo, I love your patch! Perhaps something to improve: [auto build test WARNING on nf/master] url: https://github.com/0day-ci/linux/commits/Pablo-Neira-Ayuso/netfilter-nf_tables-skip-netlink-portID-validation-if-zero/20210622-181539 base: https://git.kernel.org/pub/scm/linux/kernel/git/pablo/nf.git master config: arc-allyesconfig (attached as .config) compiler: arceb-elf-gcc (GCC) 9.3.0 reproduce (this is a W=1 build): wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross # https://github.com/0day-ci/linux/commit/cdd859ce5abc8381eeb7ea8088fb4c273cb7c2cb git remote add linux-review https://github.com/0day-ci/linux git fetch --no-tags linux-review Pablo-Neira-Ayuso/netfilter-nf_tables-skip-netlink-portID-validation-if-zero/20210622-181539 git checkout cdd859ce5abc8381eeb7ea8088fb4c273cb7c2cb # save the attached .config to linux build tree COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross ARCH=arc If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot All warnings (new ones prefixed by >>): net/netfilter/nf_tables_api.c: In function 'nft_table_lookup_byhandle': net/netfilter/nf_tables_api.c:605:19: error: invalid storage class for function 'nf_tables_alloc_handle' 605 | static inline u64 nf_tables_alloc_handle(struct nft_table *table) | ^~~~~~~~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:605:1: warning: ISO C90 forbids mixed declarations and code [-Wdeclaration-after-statement] 605 | static inline u64 nf_tables_alloc_handle(struct nft_table *table) | ^~~~~~ net/netfilter/nf_tables_api.c:613:1: error: invalid storage class for function '__nft_chain_type_get' 613 | __nft_chain_type_get(u8 family, enum nft_chain_types type) | ^~~~~~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:623:1: error: invalid storage class for function '__nf_tables_chain_type_lookup' 623 | __nf_tables_chain_type_lookup(const struct nlattr *nla, u8 family) | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from include/linux/linkage.h:7, from include/linux/kernel.h:8, from include/linux/list.h:9, from include/linux/module.h:12, from net/netfilter/nf_tables_api.c:8: net/netfilter/nf_tables_api.c:681:19: error: non-static declaration of 'nft_request_module' follows static declaration 681 | EXPORT_SYMBOL_GPL(nft_request_module); | ^~~~~~~~~~~~~~~~~~ include/linux/export.h:98:21: note: in definition of macro '___EXPORT_SYMBOL' 98 | extern typeof(sym) sym; \ | ^~~ include/linux/export.h:155:34: note: in expansion of macro '__EXPORT_SYMBOL' 155 | #define _EXPORT_SYMBOL(sym, sec) __EXPORT_SYMBOL(sym, sec, "") | ^~~~~~~~~~~~~~~ include/linux/export.h:159:33: note: in expansion of macro '_EXPORT_SYMBOL' 159 | #define EXPORT_SYMBOL_GPL(sym) _EXPORT_SYMBOL(sym, "_gpl") | ^~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:681:1: note: in expansion of macro 'EXPORT_SYMBOL_GPL' 681 | EXPORT_SYMBOL_GPL(nft_request_module); | ^~~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:645:20: note: previous definition of 'nft_request_module' was here 645 | __printf(2, 3) int nft_request_module(struct net *net, const char *fmt, | ^~~~~~~~~~~~~~~~~~ In file included from include/linux/linkage.h:7, from include/linux/kernel.h:8, from include/linux/list.h:9, from include/linux/module.h:12, from net/netfilter/nf_tables_api.c:8: >> include/linux/export.h:67:2: warning: ISO C90 forbids mixed declarations and code [-Wdeclaration-after-statement] 67 | static const struct kernel_symbol __ksymtab_##sym \ | ^~~~~~ include/linux/export.h:108:2: note: in expansion of macro '__KSYMTAB_ENTRY' 108 | __KSYMTAB_ENTRY(sym, sec) | ^~~~~~~~~~~~~~~ include/linux/export.h:147:39: note: in expansion of macro '___EXPORT_SYMBOL' 147 | #define __EXPORT_SYMBOL(sym, sec, ns) ___EXPORT_SYMBOL(sym, sec, ns) | ^~~~~~~~~~~~~~~~ include/linux/export.h:155:34: note: in expansion of macro '__EXPORT_SYMBOL' 155 | #define _EXPORT_SYMBOL(sym, sec) __EXPORT_SYMBOL(sym, sec, "") | ^~~~~~~~~~~~~~~ include/linux/export.h:159:33: note: in expansion of macro '_EXPORT_SYMBOL' 159 | #define EXPORT_SYMBOL_GPL(sym) _EXPORT_SYMBOL(sym, "_gpl") | ^~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:681:1: note: in expansion of macro 'EXPORT_SYMBOL_GPL' 681 | EXPORT_SYMBOL_GPL(nft_request_module); | ^~~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:684:13: error: invalid storage class for function 'lockdep_nfnl_nft_mutex_not_held' 684 | static void lockdep_nfnl_nft_mutex_not_held(void) | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:693:1: error: invalid storage class for function 'nf_tables_chain_type_lookup' 693 | nf_tables_chain_type_lookup(struct net *net, const struct nlattr *nla, | ^~~~~~~~~~~~~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:714:15: error: invalid storage class for function 'nft_base_seq' 714 | static __be16 nft_base_seq(const struct net *net) | ^~~~~~~~~~~~ net/netfilter/nf_tables_api.c:730:12: error: invalid storage class for function 'nf_tables_fill_table_info' 730 | static int nf_tables_fill_table_info(struct sk_buff *skb, struct net *net, | ^~~~~~~~~~~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:771:13: error: invalid storage class for function 'nft_notify_enqueue' 771 | static void nft_notify_enqueue(struct sk_buff *skb, bool report, | ^~~~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:778:13: error: invalid storage class for function 'nf_tables_table_notify' 778 | static void nf_tables_table_notify(const struct nft_ctx *ctx, int event) | ^~~~~~~~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:806:12: error: invalid storage class for function 'nf_tables_dump_tables' 806 | static int nf_tables_dump_tables(struct sk_buff *skb, | ^~~~~~~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:848:12: error: invalid storage class for function 'nft_netlink_dump_start_rcu' 848 | static int nft_netlink_dump_start_rcu(struct sock *nlsk, struct sk_buff *skb, | ^~~~~~~~~~~~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:866:12: error: invalid storage class for function 'nf_tables_gettable' 866 | static int nf_tables_gettable(struct sk_buff *skb, const struct nfnl_info *info, | ^~~~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:910:13: error: invalid storage class for function 'nft_table_disable' 910 | static void nft_table_disable(struct net *net, struct nft_table *table, u32 cnt) | ^~~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:928:12: error: invalid storage class for function 'nf_tables_table_enable' 928 | static int nf_tables_table_enable(struct net *net, struct nft_table *table) | ^~~~~~~~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:953:13: error: invalid storage class for function 'nf_tables_table_disable' 953 | static void nf_tables_table_disable(struct net *net, struct nft_table *table) | ^~~~~~~~~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:966:12: error: invalid storage class for function 'nf_tables_updtable' 966 | static int nf_tables_updtable(struct nft_ctx *ctx) | ^~~~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:1020:12: error: invalid storage class for function 'nft_chain_hash' 1020 | static u32 nft_chain_hash(const void *data, u32 len, u32 seed) | ^~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:1027:12: error: invalid storage class for function 'nft_chain_hash_obj' 1027 | static u32 nft_chain_hash_obj(const void *data, u32 len, u32 seed) | ^~~~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:1034:12: error: invalid storage class for function 'nft_chain_hash_cmp' 1034 | static int nft_chain_hash_cmp(struct rhashtable_compare_arg *arg, | ^~~~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:1043:12: error: invalid storage class for function 'nft_objname_hash' 1043 | static u32 nft_objname_hash(const void *data, u32 len, u32 seed) | ^~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:1052:12: error: invalid storage class for function 'nft_objname_hash_obj' 1052 | static u32 nft_objname_hash_obj(const void *data, u32 len, u32 seed) | ^~~~~~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:1059:12: error: invalid storage class for function 'nft_objname_hash_cmp' 1059 | static int nft_objname_hash_cmp(struct rhashtable_compare_arg *arg, | ^~~~~~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:1071:12: error: invalid storage class for function 'nf_tables_newtable' 1071 | static int nf_tables_newtable(struct sk_buff *skb, const struct nfnl_info *info, | ^~~~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:1162:12: error: invalid storage class for function 'nft_flush_table' 1162 | static int nft_flush_table(struct nft_ctx *ctx) | ^~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:1234:12: error: invalid storage class for function 'nft_flush' 1234 | static int nft_flush(struct nft_ctx *ctx, int family) | ^~~~~~~~~ net/netfilter/nf_tables_api.c:1267:12: error: invalid storage class for function 'nf_tables_deltable' 1267 | static int nf_tables_deltable(struct sk_buff *skb, const struct nfnl_info *info, | ^~~~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:1309:13: error: invalid storage class for function 'nf_tables_table_destroy' 1309 | static void nf_tables_table_destroy(struct nft_ctx *ctx) | ^~~~~~~~~~~~~~~~~~~~~~~ In file included from include/linux/linkage.h:7, from include/linux/kernel.h:8, from include/linux/list.h:9, from include/linux/module.h:12, from net/netfilter/nf_tables_api.c:8: net/netfilter/nf_tables_api.c:1330:19: error: non-static declaration of 'nft_register_chain_type' follows static declaration 1330 | EXPORT_SYMBOL_GPL(nft_register_chain_type); | ^~~~~~~~~~~~~~~~~~~~~~~ include/linux/export.h:98:21: note: in definition of macro '___EXPORT_SYMBOL' 98 | extern typeof(sym) sym; \ | ^~~ include/linux/export.h:155:34: note: in expansion of macro '__EXPORT_SYMBOL' 155 | #define _EXPORT_SYMBOL(sym, sec) __EXPORT_SYMBOL(sym, sec, "") | ^~~~~~~~~~~~~~~ include/linux/export.h:159:33: note: in expansion of macro '_EXPORT_SYMBOL' 159 | #define EXPORT_SYMBOL_GPL(sym) _EXPORT_SYMBOL(sym, "_gpl") | ^~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:1330:1: note: in expansion of macro 'EXPORT_SYMBOL_GPL' 1330 | EXPORT_SYMBOL_GPL(nft_register_chain_type); | ^~~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:1320:6: note: previous definition of 'nft_register_chain_type' was here 1320 | void nft_register_chain_type(const struct nft_chain_type *ctype) | ^~~~~~~~~~~~~~~~~~~~~~~ In file included from include/linux/linkage.h:7, from include/linux/kernel.h:8, from include/linux/list.h:9, from include/linux/module.h:12, from net/netfilter/nf_tables_api.c:8: >> include/linux/export.h:67:2: warning: ISO C90 forbids mixed declarations and code [-Wdeclaration-after-statement] 67 | static const struct kernel_symbol __ksymtab_##sym \ | ^~~~~~ include/linux/export.h:108:2: note: in expansion of macro '__KSYMTAB_ENTRY' 108 | __KSYMTAB_ENTRY(sym, sec) | ^~~~~~~~~~~~~~~ include/linux/export.h:147:39: note: in expansion of macro '___EXPORT_SYMBOL' 147 | #define __EXPORT_SYMBOL(sym, sec, ns) ___EXPORT_SYMBOL(sym, sec, ns) | ^~~~~~~~~~~~~~~~ include/linux/export.h:155:34: note: in expansion of macro '__EXPORT_SYMBOL' 155 | #define _EXPORT_SYMBOL(sym, sec) __EXPORT_SYMBOL(sym, sec, "") | ^~~~~~~~~~~~~~~ include/linux/export.h:159:33: note: in expansion of macro '_EXPORT_SYMBOL' 159 | #define EXPORT_SYMBOL_GPL(sym) _EXPORT_SYMBOL(sym, "_gpl") | ^~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:1330:1: note: in expansion of macro 'EXPORT_SYMBOL_GPL' 1330 | EXPORT_SYMBOL_GPL(nft_register_chain_type); | ^~~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:1338:19: error: non-static declaration of 'nft_unregister_chain_type' follows static declaration 1338 | EXPORT_SYMBOL_GPL(nft_unregister_chain_type); | ^~~~~~~~~~~~~~~~~~~~~~~~~ include/linux/export.h:98:21: note: in definition of macro '___EXPORT_SYMBOL' 98 | extern typeof(sym) sym; \ | ^~~ include/linux/export.h:155:34: note: in expansion of macro '__EXPORT_SYMBOL' 155 | #define _EXPORT_SYMBOL(sym, sec) __EXPORT_SYMBOL(sym, sec, "") | ^~~~~~~~~~~~~~~ include/linux/export.h:159:33: note: in expansion of macro '_EXPORT_SYMBOL' 159 | #define EXPORT_SYMBOL_GPL(sym) _EXPORT_SYMBOL(sym, "_gpl") | ^~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:1338:1: note: in expansion of macro 'EXPORT_SYMBOL_GPL' 1338 | EXPORT_SYMBOL_GPL(nft_unregister_chain_type); | ^~~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:1332:6: note: previous definition of 'nft_unregister_chain_type' was here 1332 | void nft_unregister_chain_type(const struct nft_chain_type *ctype) | ^~~~~~~~~~~~~~~~~~~~~~~~~ In file included from include/linux/linkage.h:7, from include/linux/kernel.h:8, from include/linux/list.h:9, from include/linux/module.h:12, from net/netfilter/nf_tables_api.c:8: >> include/linux/export.h:67:2: warning: ISO C90 forbids mixed declarations and code [-Wdeclaration-after-statement] 67 | static const struct kernel_symbol __ksymtab_##sym \ | ^~~~~~ include/linux/export.h:108:2: note: in expansion of macro '__KSYMTAB_ENTRY' 108 | __KSYMTAB_ENTRY(sym, sec) | ^~~~~~~~~~~~~~~ include/linux/export.h:147:39: note: in expansion of macro '___EXPORT_SYMBOL' 147 | #define __EXPORT_SYMBOL(sym, sec, ns) ___EXPORT_SYMBOL(sym, sec, ns) | ^~~~~~~~~~~~~~~~ include/linux/export.h:155:34: note: in expansion of macro '__EXPORT_SYMBOL' 155 | #define _EXPORT_SYMBOL(sym, sec) __EXPORT_SYMBOL(sym, sec, "") | ^~~~~~~~~~~~~~~ include/linux/export.h:159:33: note: in expansion of macro '_EXPORT_SYMBOL' 159 | #define EXPORT_SYMBOL_GPL(sym) _EXPORT_SYMBOL(sym, "_gpl") | ^~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:1338:1: note: in expansion of macro 'EXPORT_SYMBOL_GPL' 1338 | EXPORT_SYMBOL_GPL(nft_unregister_chain_type); | ^~~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:1345:1: error: invalid storage class for function 'nft_chain_lookup_byhandle' 1345 | nft_chain_lookup_byhandle(const struct nft_table *table, u64 handle, u8 genmask) | ^~~~~~~~~~~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:1358:13: error: invalid storage class for function 'lockdep_commit_lock_is_held' 1358 | static bool lockdep_commit_lock_is_held(const struct net *net) | ^~~~~~~~~~~~~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:1369:26: error: invalid storage class for function 'nft_chain_lookup' 1369 | static struct nft_chain *nft_chain_lookup(struct net *net, | ^~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:1425:12: error: invalid storage class for function 'nft_dump_stats' 1425 | static int nft_dump_stats(struct sk_buff *skb, struct nft_stats __percpu *stats) | ^~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:1464:12: error: invalid storage class for function 'nft_dump_basechain_hook' 1464 | static int nft_dump_basechain_hook(struct sk_buff *skb, int family, | ^~~~~~~~~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:1504:12: error: invalid storage class for function 'nf_tables_fill_chain_info' 1504 | static int nf_tables_fill_chain_info(struct sk_buff *skb, struct net *net, | ^~~~~~~~~~~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:1564:13: error: invalid storage class for function 'nf_tables_chain_notify' 1564 | static void nf_tables_chain_notify(const struct nft_ctx *ctx, int event) | ^~~~~~~~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:1593:12: error: invalid storage class for function 'nf_tables_dump_chains' 1593 | static int nf_tables_dump_chains(struct sk_buff *skb, | ^~~~~~~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:1641:12: error: invalid storage class for function 'nf_tables_getchain' 1641 | static int nf_tables_getchain(struct sk_buff *skb, const struct nfnl_info *info, | ^~~~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:1697:35: error: invalid storage class for function 'nft_stats_alloc' 1697 | static struct nft_stats __percpu *nft_stats_alloc(const struct nlattr *attr) | ^~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:1728:13: error: invalid storage class for function 'nft_chain_stats_replace' 1728 | static void nft_chain_stats_replace(struct nft_trans *trans) | ^~~~~~~~~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:1743:13: error: invalid storage class for function 'nf_tables_chain_free_chain_rules' 1743 | static void nf_tables_chain_free_chain_rules(struct nft_chain *chain) | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:1793:25: error: invalid storage class for function 'nft_netdev_hook_alloc' 1793 | static struct nft_hook *nft_netdev_hook_alloc(struct net *net, | ^~~~~~~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:1828:25: error: invalid storage class for function 'nft_hook_list_find' 1828 | static struct nft_hook *nft_hook_list_find(struct list_head *hook_list, | ^~~~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:1841:12: error: invalid storage class for function 'nf_tables_parse_netdev_hooks' 1841 | static int nf_tables_parse_netdev_hooks(struct net *net, | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:1891:12: error: invalid storage class for function 'nft_chain_parse_netdev' 1891 | static int nft_chain_parse_netdev(struct net *net, | ^~~~~~~~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:1919:12: error: invalid storage class for function 'nft_chain_parse_hook' 1919 | static int nft_chain_parse_hook(struct net *net, | ^~~~~~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:1987:13: error: invalid storage class for function 'nft_chain_release_hook' 1987 | static void nft_chain_release_hook(struct nft_chain_hook *hook) | ^~~~~~~~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:2003:26: error: invalid storage class for function 'nf_tables_chain_alloc_rules' 2003 | static struct nft_rule **nf_tables_chain_alloc_rules(const struct nft_chain *chain, | ^~~~~~~~~~~~~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:2019:13: error: invalid storage class for function 'nft_basechain_hook_init' 2019 | static void nft_basechain_hook_init(struct nf_hook_ops *ops, u8 family, | ^~~~~~~~~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:2030:12: error: invalid storage class for function 'nft_basechain_init' 2030 | static int nft_basechain_init(struct nft_base_chain *basechain, u8 family, | ^~~~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:2062:12: error: invalid storage class for function 'nft_chain_add' 2062 | static int nft_chain_add(struct nft_table *table, struct nft_chain *chain) | ^~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:2078:12: error: invalid storage class for function 'nf_tables_addchain' 2078 | static int nf_tables_addchain(struct nft_ctx *ctx, u8 family, u8 genmask, | ^~~~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:2216:13: error: invalid storage class for function 'nft_hook_list_equal' 2216 | static bool nft_hook_list_equal(struct list_head *hook_list1, | ^~~~~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:2235:12: error: invalid storage class for function 'nf_tables_updchain' 2235 | static int nf_tables_updchain(struct nft_ctx *ctx, u8 genmask, u8 policy, | ^~~~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:2358:26: error: invalid storage class for function 'nft_chain_lookup_byid' 2358 | static struct nft_chain *nft_chain_lookup_byid(const struct net *net, | ^~~~~~~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:2375:12: error: invalid storage class for function 'nf_tables_newchain' 2375 | static int nf_tables_newchain(struct sk_buff *skb, const struct nfnl_info *info, | ^~~~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:2474:12: error: invalid storage class for function 'nf_tables_delchain' 2474 | static int nf_tables_delchain(struct sk_buff *skb, const struct nfnl_info *info, | ^~~~~~~~~~~~~~~~~~ In file included from include/linux/linkage.h:7, from include/linux/kernel.h:8, from include/linux/list.h:9, from include/linux/module.h:12, from net/netfilter/nf_tables_api.c:8: net/netfilter/nf_tables_api.c:2560:19: error: non-static declaration of 'nft_register_expr' follows static declaration 2560 | EXPORT_SYMBOL_GPL(nft_register_expr); | ^~~~~~~~~~~~~~~~~ include/linux/export.h:98:21: note: in definition of macro '___EXPORT_SYMBOL' 98 | extern typeof(sym) sym; \ | ^~~ include/linux/export.h:155:34: note: in expansion of macro '__EXPORT_SYMBOL' 155 | #define _EXPORT_SYMBOL(sym, sec) __EXPORT_SYMBOL(sym, sec, "") | ^~~~~~~~~~~~~~~ include/linux/export.h:159:33: note: in expansion of macro '_EXPORT_SYMBOL' 159 | #define EXPORT_SYMBOL_GPL(sym) _EXPORT_SYMBOL(sym, "_gpl") | ^~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:2560:1: note: in expansion of macro 'EXPORT_SYMBOL_GPL' 2560 | EXPORT_SYMBOL_GPL(nft_register_expr); | ^~~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:2550:5: note: previous definition of 'nft_register_expr' was here 2550 | int nft_register_expr(struct nft_expr_type *type) | ^~~~~~~~~~~~~~~~~ In file included from include/linux/linkage.h:7, from include/linux/kernel.h:8, from include/linux/list.h:9, from include/linux/module.h:12, from net/netfilter/nf_tables_api.c:8: >> include/linux/export.h:67:2: warning: ISO C90 forbids mixed declarations and code [-Wdeclaration-after-statement] 67 | static const struct kernel_symbol __ksymtab_##sym \ | ^~~~~~ include/linux/export.h:108:2: note: in expansion of macro '__KSYMTAB_ENTRY' 108 | __KSYMTAB_ENTRY(sym, sec) | ^~~~~~~~~~~~~~~ include/linux/export.h:147:39: note: in expansion of macro '___EXPORT_SYMBOL' 147 | #define __EXPORT_SYMBOL(sym, sec, ns) ___EXPORT_SYMBOL(sym, sec, ns) | ^~~~~~~~~~~~~~~~ include/linux/export.h:155:34: note: in expansion of macro '__EXPORT_SYMBOL' 155 | #define _EXPORT_SYMBOL(sym, sec) __EXPORT_SYMBOL(sym, sec, "") | ^~~~~~~~~~~~~~~ include/linux/export.h:159:33: note: in expansion of macro '_EXPORT_SYMBOL' 159 | #define EXPORT_SYMBOL_GPL(sym) _EXPORT_SYMBOL(sym, "_gpl") | ^~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:2560:1: note: in expansion of macro 'EXPORT_SYMBOL_GPL' 2560 | EXPORT_SYMBOL_GPL(nft_register_expr); | ^~~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:2574:19: error: non-static declaration of 'nft_unregister_expr' follows static declaration 2574 | EXPORT_SYMBOL_GPL(nft_unregister_expr); | ^~~~~~~~~~~~~~~~~~~ include/linux/export.h:98:21: note: in definition of macro '___EXPORT_SYMBOL' 98 | extern typeof(sym) sym; \ | ^~~ include/linux/export.h:155:34: note: in expansion of macro '__EXPORT_SYMBOL' 155 | #define _EXPORT_SYMBOL(sym, sec) __EXPORT_SYMBOL(sym, sec, "") | ^~~~~~~~~~~~~~~ include/linux/export.h:159:33: note: in expansion of macro '_EXPORT_SYMBOL' 159 | #define EXPORT_SYMBOL_GPL(sym) _EXPORT_SYMBOL(sym, "_gpl") | ^~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:2574:1: note: in expansion of macro 'EXPORT_SYMBOL_GPL' 2574 | EXPORT_SYMBOL_GPL(nft_unregister_expr); | ^~~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:2568:6: note: previous definition of 'nft_unregister_expr' was here 2568 | void nft_unregister_expr(struct nft_expr_type *type) | ^~~~~~~~~~~~~~~~~~~ In file included from include/linux/linkage.h:7, from include/linux/kernel.h:8, from include/linux/list.h:9, from include/linux/module.h:12, from net/netfilter/nf_tables_api.c:8: >> include/linux/export.h:67:2: warning: ISO C90 forbids mixed declarations and code [-Wdeclaration-after-statement] 67 | static const struct kernel_symbol __ksymtab_##sym \ | ^~~~~~ include/linux/export.h:108:2: note: in expansion of macro '__KSYMTAB_ENTRY' 108 | __KSYMTAB_ENTRY(sym, sec) | ^~~~~~~~~~~~~~~ include/linux/export.h:147:39: note: in expansion of macro '___EXPORT_SYMBOL' 147 | #define __EXPORT_SYMBOL(sym, sec, ns) ___EXPORT_SYMBOL(sym, sec, ns) | ^~~~~~~~~~~~~~~~ include/linux/export.h:155:34: note: in expansion of macro '__EXPORT_SYMBOL' 155 | #define _EXPORT_SYMBOL(sym, sec) __EXPORT_SYMBOL(sym, sec, "") | ^~~~~~~~~~~~~~~ include/linux/export.h:159:33: note: in expansion of macro '_EXPORT_SYMBOL' 159 | #define EXPORT_SYMBOL_GPL(sym) _EXPORT_SYMBOL(sym, "_gpl") | ^~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:2574:1: note: in expansion of macro 'EXPORT_SYMBOL_GPL' 2574 | EXPORT_SYMBOL_GPL(nft_unregister_expr); | ^~~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:2576:36: error: invalid storage class for function '__nft_expr_type_get' 2576 | static const struct nft_expr_type *__nft_expr_type_get(u8 family, | ^~~~~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:2593:12: error: invalid storage class for function 'nft_expr_type_request_module' 2593 | static int nft_expr_type_request_module(struct net *net, u8 family, | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:2604:36: error: invalid storage class for function 'nft_expr_type_get' 2604 | static const struct nft_expr_type *nft_expr_type_get(struct net *net, | ^~~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:2638:12: error: invalid storage class for function 'nf_tables_fill_expr_info' 2638 | static int nf_tables_fill_expr_info(struct sk_buff *skb, | ^~~~~~~~~~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:2660:1: warning: ISO C90 forbids mixed declarations and code [-Wdeclaration-after-statement] 2660 | int nft_expr_dump(struct sk_buff *skb, unsigned int attr, | ^~~ net/netfilter/nf_tables_api.c:2683:12: error: invalid storage class for function 'nf_tables_expr_parse' 2683 | static int nf_tables_expr_parse(const struct nft_ctx *ctx, | ^~~~~~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:2737:12: error: invalid storage class for function 'nf_tables_newexpr' 2737 | static int nf_tables_newexpr(const struct nft_ctx *ctx, | ^~~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:2757:13: error: invalid storage class for function 'nf_tables_expr_destroy' 2757 | static void nf_tables_expr_destroy(const struct nft_ctx *ctx, | ^~~~~~~~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:2767:25: error: invalid storage class for function 'nft_expr_init' 2767 | static struct nft_expr *nft_expr_init(const struct nft_ctx *ctx, | ^~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:2829:25: error: invalid storage class for function '__nft_rule_lookup' 2829 | static struct nft_rule *__nft_rule_lookup(const struct nft_chain *chain, | ^~~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:2843:25: error: invalid storage class for function 'nft_rule_lookup' 2843 | static struct nft_rule *nft_rule_lookup(const struct nft_chain *chain, | ^~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:2868:12: error: invalid storage class for function 'nf_tables_fill_rule_info' 2868 | static int nf_tables_fill_rule_info(struct sk_buff *skb, struct net *net, | ^~~~~~~~~~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:2928:13: error: invalid storage class for function 'nf_tables_rule_notify' 2928 | static void nf_tables_rule_notify(const struct nft_ctx *ctx, | ^~~~~~~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:2962:12: error: invalid storage class for function '__nf_tables_dump_rules' 2962 | static int __nf_tables_dump_rules(struct sk_buff *skb, | ^~~~~~~~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:2999:12: error: invalid storage class for function 'nf_tables_dump_rules' 2999 | static int nf_tables_dump_rules(struct sk_buff *skb, | ^~~~~~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:3055:12: error: invalid storage class for function 'nf_tables_dump_rules_start' 3055 | static int nf_tables_dump_rules_start(struct netlink_callback *cb) | ^~~~~~~~~~~~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:3088:12: error: invalid storage class for function 'nf_tables_dump_rules_done' 3088 | static int nf_tables_dump_rules_done(struct netlink_callback *cb) | ^~~~~~~~~~~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:3101:12: error: invalid storage class for function 'nf_tables_getrule' 3101 | static int nf_tables_getrule(struct sk_buff *skb, const struct nfnl_info *info, | ^~~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:3162:13: error: invalid storage class for function 'nf_tables_rule_destroy' 3162 | static void nf_tables_rule_destroy(const struct nft_ctx *ctx, | ^~~~~~~~~~~~~~~~~~~~~~ In file included from include/linux/linkage.h:7, from include/linux/kernel.h:8, from include/linux/list.h:9, from include/linux/module.h:12, from net/netfilter/nf_tables_api.c:8: net/netfilter/nf_tables_api.c:3212:19: error: non-static declaration of 'nft_chain_validate' follows static declaration 3212 | EXPORT_SYMBOL_GPL(nft_chain_validate); | ^~~~~~~~~~~~~~~~~~ include/linux/export.h:98:21: note: in definition of macro '___EXPORT_SYMBOL' 98 | extern typeof(sym) sym; \ | ^~~ include/linux/export.h:155:34: note: in expansion of macro '__EXPORT_SYMBOL' 155 | #define _EXPORT_SYMBOL(sym, sec) __EXPORT_SYMBOL(sym, sec, "") | ^~~~~~~~~~~~~~~ include/linux/export.h:159:33: note: in expansion of macro '_EXPORT_SYMBOL' 159 | #define EXPORT_SYMBOL_GPL(sym) _EXPORT_SYMBOL(sym, "_gpl") | ^~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:3212:1: note: in expansion of macro 'EXPORT_SYMBOL_GPL' 3212 | EXPORT_SYMBOL_GPL(nft_chain_validate); | ^~~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:3186:5: note: previous definition of 'nft_chain_validate' was here 3186 | int nft_chain_validate(const struct nft_ctx *ctx, const struct nft_chain *chain) | ^~~~~~~~~~~~~~~~~~ In file included from include/linux/linkage.h:7, from include/linux/kernel.h:8, from include/linux/list.h:9, from include/linux/module.h:12, from net/netfilter/nf_tables_api.c:8: >> include/linux/export.h:67:2: warning: ISO C90 forbids mixed declarations and code [-Wdeclaration-after-statement] 67 | static const struct kernel_symbol __ksymtab_##sym \ | ^~~~~~ include/linux/export.h:108:2: note: in expansion of macro '__KSYMTAB_ENTRY' 108 | __KSYMTAB_ENTRY(sym, sec) | ^~~~~~~~~~~~~~~ include/linux/export.h:147:39: note: in expansion of macro '___EXPORT_SYMBOL' 147 | #define __EXPORT_SYMBOL(sym, sec, ns) ___EXPORT_SYMBOL(sym, sec, ns) | ^~~~~~~~~~~~~~~~ include/linux/export.h:155:34: note: in expansion of macro '__EXPORT_SYMBOL' 155 | #define _EXPORT_SYMBOL(sym, sec) __EXPORT_SYMBOL(sym, sec, "") | ^~~~~~~~~~~~~~~ include/linux/export.h:159:33: note: in expansion of macro '_EXPORT_SYMBOL' 159 | #define EXPORT_SYMBOL_GPL(sym) _EXPORT_SYMBOL(sym, "_gpl") | ^~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:3212:1: note: in expansion of macro 'EXPORT_SYMBOL_GPL' 3212 | EXPORT_SYMBOL_GPL(nft_chain_validate); | ^~~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:3214:12: error: invalid storage class for function 'nft_table_validate' 3214 | static int nft_table_validate(struct net *net, const struct nft_table *table) | ^~~~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:3236:25: error: invalid storage class for function 'nft_rule_lookup_byid' 3236 | static struct nft_rule *nft_rule_lookup_byid(const struct net *net, | ^~~~~~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:3241:12: error: invalid storage class for function 'nf_tables_newrule' 3241 | static int nf_tables_newrule(struct sk_buff *skb, const struct nfnl_info *info, | ^~~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c: In function 'nf_tables_newrule': net/netfilter/nf_tables_api.c:3326:15: error: implicit declaration of function 'nft_rule_lookup_byid'; did you mean 'nft_rule_lookup'? [-Werror=implicit-function-declaration] 3326 | old_rule = nft_rule_lookup_byid(net, nla[NFTA_RULE_POSITION_ID]); | ^~~~~~~~~~~~~~~~~~~~ | nft_rule_lookup net/netfilter/nf_tables_api.c:3326:13: warning: assignment to 'struct nft_rule *' from 'int' makes pointer from integer without a cast [-Wint-conversion] 3326 | old_rule = nft_rule_lookup_byid(net, nla[NFTA_RULE_POSITION_ID]); | ^ net/netfilter/nf_tables_api.c: In function 'nft_table_lookup_byhandle': net/netfilter/nf_tables_api.c:3465:25: error: invalid storage class for function 'nft_rule_lookup_byid' 3465 | static struct nft_rule *nft_rule_lookup_byid(const struct net *net, | ^~~~~~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:3482:12: error: invalid storage class for function 'nf_tables_delrule' 3482 | static int nf_tables_delrule(struct sk_buff *skb, const struct nfnl_info *info, | ^~~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:3569:13: error: invalid storage class for function 'nft_set_ops_candidate' 3569 | static bool nft_set_ops_candidate(const struct nft_set_type *type, u32 flags) | ^~~~~~~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:3580:1: error: invalid storage class for function 'nft_select_set_ops' 3580 | nft_select_set_ops(const struct nft_ctx *ctx, | ^~~~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:3673:12: error: invalid storage class for function 'nft_ctx_init_from_setattr' 3673 | static int nft_ctx_init_from_setattr(struct nft_ctx *ctx, struct net *net, | ^~~~~~~~~~~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:3697:24: error: invalid storage class for function 'nft_set_lookup' 3697 | static struct nft_set *nft_set_lookup(const struct nft_table *table, | ^~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:3713:24: error: invalid storage class for function 'nft_set_lookup_byhandle' 3713 | static struct nft_set *nft_set_lookup_byhandle(const struct nft_table *table, | ^~~~~~~~~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:3727:24: error: invalid storage class for function 'nft_set_lookup_byid' 3727 | static struct nft_set *nft_set_lookup_byid(const struct net *net, | ^~~~~~~~~~~~~~~~~~~ In file included from include/linux/linkage.h:7, from include/linux/kernel.h:8, from include/linux/list.h:9, from include/linux/module.h:12, from net/netfilter/nf_tables_api.c:8: net/netfilter/nf_tables_api.c:3763:19: error: non-static declaration of 'nft_set_lookup_global' follows static declaration 3763 | EXPORT_SYMBOL_GPL(nft_set_lookup_global); | ^~~~~~~~~~~~~~~~~~~~~ include/linux/export.h:98:21: note: in definition of macro '___EXPORT_SYMBOL' 98 | extern typeof(sym) sym; \ | ^~~ include/linux/export.h:155:34: note: in expansion of macro '__EXPORT_SYMBOL' 155 | #define _EXPORT_SYMBOL(sym, sec) __EXPORT_SYMBOL(sym, sec, "") | ^~~~~~~~~~~~~~~ include/linux/export.h:159:33: note: in expansion of macro '_EXPORT_SYMBOL' 159 | #define EXPORT_SYMBOL_GPL(sym) _EXPORT_SYMBOL(sym, "_gpl") | ^~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:3763:1: note: in expansion of macro 'EXPORT_SYMBOL_GPL' 3763 | EXPORT_SYMBOL_GPL(nft_set_lookup_global); | ^~~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:3746:17: note: previous definition of 'nft_set_lookup_global' was here 3746 | struct nft_set *nft_set_lookup_global(const struct net *net, | ^~~~~~~~~~~~~~~~~~~~~ In file included from include/linux/linkage.h:7, from include/linux/kernel.h:8, from include/linux/list.h:9, from include/linux/module.h:12, from net/netfilter/nf_tables_api.c:8: >> include/linux/export.h:67:2: warning: ISO C90 forbids mixed declarations and code [-Wdeclaration-after-statement] 67 | static const struct kernel_symbol __ksymtab_##sym \ | ^~~~~~ include/linux/export.h:108:2: note: in expansion of macro '__KSYMTAB_ENTRY' 108 | __KSYMTAB_ENTRY(sym, sec) | ^~~~~~~~~~~~~~~ include/linux/export.h:147:39: note: in expansion of macro '___EXPORT_SYMBOL' 147 | #define __EXPORT_SYMBOL(sym, sec, ns) ___EXPORT_SYMBOL(sym, sec, ns) | ^~~~~~~~~~~~~~~~ include/linux/export.h:155:34: note: in expansion of macro '__EXPORT_SYMBOL' 155 | #define _EXPORT_SYMBOL(sym, sec) __EXPORT_SYMBOL(sym, sec, "") | ^~~~~~~~~~~~~~~ include/linux/export.h:159:33: note: in expansion of macro '_EXPORT_SYMBOL' 159 | #define EXPORT_SYMBOL_GPL(sym) _EXPORT_SYMBOL(sym, "_gpl") | ^~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:3763:1: note: in expansion of macro 'EXPORT_SYMBOL_GPL' 3763 | EXPORT_SYMBOL_GPL(nft_set_lookup_global); | ^~~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:3765:12: error: invalid storage class for function 'nf_tables_set_alloc_name' 3765 | static int nf_tables_set_alloc_name(struct nft_ctx *ctx, struct nft_set *set, | ^~~~~~~~~~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:3839:12: error: invalid storage class for function 'nf_tables_fill_set_concat' 3839 | static int nf_tables_fill_set_concat(struct sk_buff *skb, | ^~~~~~~~~~~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:3866:12: error: invalid storage class for function 'nf_tables_fill_set' 3866 | static int nf_tables_fill_set(struct sk_buff *skb, const struct nft_ctx *ctx, | ^~~~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:3964:13: error: invalid storage class for function 'nf_tables_set_notify' 3964 | static void nf_tables_set_notify(const struct nft_ctx *ctx, | ^~~~~~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:3993:12: error: invalid storage class for function 'nf_tables_dump_sets' 3993 | static int nf_tables_dump_sets(struct sk_buff *skb, struct netlink_callback *cb) | ^~~~~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:4054:12: error: invalid storage class for function 'nf_tables_dump_sets_start' 4054 | static int nf_tables_dump_sets_start(struct netlink_callback *cb) | ^~~~~~~~~~~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:4066:12: error: invalid storage class for function 'nf_tables_dump_sets_done' 4066 | static int nf_tables_dump_sets_done(struct netlink_callback *cb) | ^~~~~~~~~~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:4073:12: error: invalid storage class for function 'nf_tables_getset' 4073 | static int nf_tables_getset(struct sk_buff *skb, const struct nfnl_info *info, | ^~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:4132:12: error: invalid storage class for function 'nft_set_desc_concat_parse' 4132 | static int nft_set_desc_concat_parse(const struct nlattr *attr, | ^~~~~~~~~~~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:4157:12: error: invalid storage class for function 'nft_set_desc_concat' 4157 | static int nft_set_desc_concat(struct nft_set_desc *desc, | ^~~~~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:4175:12: error: invalid storage class for function 'nf_tables_set_desc_parse' 4175 | static int nf_tables_set_desc_parse(struct nft_set_desc *desc, | ^~~~~~~~~~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:4194:12: error: invalid storage class for function 'nf_tables_newset' 4194 | static int nf_tables_newset(struct sk_buff *skb, const struct nfnl_info *info, | ^~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:4471:13: error: invalid storage class for function 'nft_set_catchall_destroy' 4471 | static void nft_set_catchall_destroy(const struct nft_ctx *ctx, | ^~~~~~~~~~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:4483:13: error: invalid storage class for function 'nft_set_destroy' 4483 | static void nft_set_destroy(const struct nft_ctx *ctx, struct nft_set *set) | ^~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:4499:12: error: invalid storage class for function 'nf_tables_delset' 4499 | static int nf_tables_delset(struct sk_buff *skb, const struct nfnl_info *info, | ^~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:4543:12: error: invalid storage class for function 'nft_validate_register_store' 4543 | static int nft_validate_register_store(const struct nft_ctx *ctx, | ^~~~~~~~~~~~~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:4549:12: error: invalid storage class for function 'nft_setelem_data_validate' 4549 | static int nft_setelem_data_validate(const struct nft_ctx *ctx, | ^~~~~~~~~~~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c: In function 'nft_setelem_data_validate': net/netfilter/nf_tables_api.c:4557:9: error: implicit declaration of function 'nft_validate_register_store'; did you mean 'nft_parse_register_store'? [-Werror=implicit-function-declaration] 4557 | return nft_validate_register_store(ctx, dreg, nft_set_ext_data(ext), | ^~~~~~~~~~~~~~~~~~~~~~~~~~~ | nft_parse_register_store net/netfilter/nf_tables_api.c: In function 'nft_table_lookup_byhandle': net/netfilter/nf_tables_api.c:4563:12: error: invalid storage class for function 'nf_tables_bind_check_setelem' 4563 | static int nf_tables_bind_check_setelem(const struct nft_ctx *ctx, | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:4571:12: error: invalid storage class for function 'nft_set_catchall_bind_check' 4571 | static int nft_set_catchall_bind_check(const struct nft_ctx *ctx, | ^~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from include/linux/linkage.h:7, from include/linux/kernel.h:8, from include/linux/list.h:9, from include/linux/module.h:12, from net/netfilter/nf_tables_api.c:8: net/netfilter/nf_tables_api.c:4637:19: error: non-static declaration of 'nf_tables_bind_set' follows static declaration 4637 | EXPORT_SYMBOL_GPL(nf_tables_bind_set); | ^~~~~~~~~~~~~~~~~~ include/linux/export.h:98:21: note: in definition of macro '___EXPORT_SYMBOL' 98 | extern typeof(sym) sym; \ | ^~~ include/linux/export.h:155:34: note: in expansion of macro '__EXPORT_SYMBOL' 155 | #define _EXPORT_SYMBOL(sym, sec) __EXPORT_SYMBOL(sym, sec, "") | ^~~~~~~~~~~~~~~ include/linux/export.h:159:33: note: in expansion of macro '_EXPORT_SYMBOL' 159 | #define EXPORT_SYMBOL_GPL(sym) _EXPORT_SYMBOL(sym, "_gpl") | ^~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:4637:1: note: in expansion of macro 'EXPORT_SYMBOL_GPL' 4637 | EXPORT_SYMBOL_GPL(nf_tables_bind_set); | ^~~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:4594:5: note: previous definition of 'nf_tables_bind_set' was here 4594 | int nf_tables_bind_set(const struct nft_ctx *ctx, struct nft_set *set, | ^~~~~~~~~~~~~~~~~~ In file included from include/linux/linkage.h:7, from include/linux/kernel.h:8, from include/linux/list.h:9, from include/linux/module.h:12, from net/netfilter/nf_tables_api.c:8: >> include/linux/export.h:67:2: warning: ISO C90 forbids mixed declarations and code [-Wdeclaration-after-statement] 67 | static const struct kernel_symbol __ksymtab_##sym \ | ^~~~~~ include/linux/export.h:108:2: note: in expansion of macro '__KSYMTAB_ENTRY' 108 | __KSYMTAB_ENTRY(sym, sec) | ^~~~~~~~~~~~~~~ include/linux/export.h:147:39: note: in expansion of macro '___EXPORT_SYMBOL' 147 | #define __EXPORT_SYMBOL(sym, sec, ns) ___EXPORT_SYMBOL(sym, sec, ns) | ^~~~~~~~~~~~~~~~ include/linux/export.h:155:34: note: in expansion of macro '__EXPORT_SYMBOL' 155 | #define _EXPORT_SYMBOL(sym, sec) __EXPORT_SYMBOL(sym, sec, "") | ^~~~~~~~~~~~~~~ include/linux/export.h:159:33: note: in expansion of macro '_EXPORT_SYMBOL' 159 | #define EXPORT_SYMBOL_GPL(sym) _EXPORT_SYMBOL(sym, "_gpl") | ^~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:4637:1: note: in expansion of macro 'EXPORT_SYMBOL_GPL' 4637 | EXPORT_SYMBOL_GPL(nf_tables_bind_set); | ^~~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:4639:13: error: invalid storage class for function 'nf_tables_unbind_set' 4639 | static void nf_tables_unbind_set(const struct nft_ctx *ctx, struct nft_set *set, | ^~~~~~~~~~~~~~~~~~~~ In file included from include/linux/linkage.h:7, from include/linux/kernel.h:8, from include/linux/list.h:9, from include/linux/module.h:12, from net/netfilter/nf_tables_api.c:8: net/netfilter/nf_tables_api.c:4669:19: error: non-static declaration of 'nf_tables_deactivate_set' follows static declaration 4669 | EXPORT_SYMBOL_GPL(nf_tables_deactivate_set); | ^~~~~~~~~~~~~~~~~~~~~~~~ include/linux/export.h:98:21: note: in definition of macro '___EXPORT_SYMBOL' 98 | extern typeof(sym) sym; \ | ^~~ include/linux/export.h:155:34: note: in expansion of macro '__EXPORT_SYMBOL' 155 | #define _EXPORT_SYMBOL(sym, sec) __EXPORT_SYMBOL(sym, sec, "") | ^~~~~~~~~~~~~~~ include/linux/export.h:159:33: note: in expansion of macro '_EXPORT_SYMBOL' 159 | #define EXPORT_SYMBOL_GPL(sym) _EXPORT_SYMBOL(sym, "_gpl") | ^~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:4669:1: note: in expansion of macro 'EXPORT_SYMBOL_GPL' 4669 | EXPORT_SYMBOL_GPL(nf_tables_deactivate_set); | ^~~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:4652:6: note: previous definition of 'nf_tables_deactivate_set' was here 4652 | void nf_tables_deactivate_set(const struct nft_ctx *ctx, struct nft_set *set, | ^~~~~~~~~~~~~~~~~~~~~~~~ In file included from include/linux/linkage.h:7, from include/linux/kernel.h:8, from include/linux/list.h:9, from include/linux/module.h:12, from net/netfilter/nf_tables_api.c:8: >> include/linux/export.h:67:2: warning: ISO C90 forbids mixed declarations and code [-Wdeclaration-after-statement] 67 | static const struct kernel_symbol __ksymtab_##sym \ | ^~~~~~ include/linux/export.h:108:2: note: in expansion of macro '__KSYMTAB_ENTRY' 108 | __KSYMTAB_ENTRY(sym, sec) | ^~~~~~~~~~~~~~~ include/linux/export.h:147:39: note: in expansion of macro '___EXPORT_SYMBOL' 147 | #define __EXPORT_SYMBOL(sym, sec, ns) ___EXPORT_SYMBOL(sym, sec, ns) | ^~~~~~~~~~~~~~~~ include/linux/export.h:155:34: note: in expansion of macro '__EXPORT_SYMBOL' 155 | #define _EXPORT_SYMBOL(sym, sec) __EXPORT_SYMBOL(sym, sec, "") | ^~~~~~~~~~~~~~~ include/linux/export.h:159:33: note: in expansion of macro '_EXPORT_SYMBOL' 159 | #define EXPORT_SYMBOL_GPL(sym) _EXPORT_SYMBOL(sym, "_gpl") | ^~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:4669:1: note: in expansion of macro 'EXPORT_SYMBOL_GPL' 4669 | EXPORT_SYMBOL_GPL(nf_tables_deactivate_set); | ^~~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:4676:19: error: non-static declaration of 'nf_tables_destroy_set' follows static declaration 4676 | EXPORT_SYMBOL_GPL(nf_tables_destroy_set); | ^~~~~~~~~~~~~~~~~~~~~ include/linux/export.h:98:21: note: in definition of macro '___EXPORT_SYMBOL' 98 | extern typeof(sym) sym; \ | ^~~ include/linux/export.h:155:34: note: in expansion of macro '__EXPORT_SYMBOL' 155 | #define _EXPORT_SYMBOL(sym, sec) __EXPORT_SYMBOL(sym, sec, "") | ^~~~~~~~~~~~~~~ include/linux/export.h:159:33: note: in expansion of macro '_EXPORT_SYMBOL' 159 | #define EXPORT_SYMBOL_GPL(sym) _EXPORT_SYMBOL(sym, "_gpl") | ^~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:4676:1: note: in expansion of macro 'EXPORT_SYMBOL_GPL' 4676 | EXPORT_SYMBOL_GPL(nf_tables_destroy_set); | ^~~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:4671:6: note: previous definition of 'nf_tables_destroy_set' was here 4671 | void nf_tables_destroy_set(const struct nft_ctx *ctx, struct nft_set *set) | ^~~~~~~~~~~~~~~~~~~~~ In file included from include/linux/linkage.h:7, from include/linux/kernel.h:8, from include/linux/list.h:9, from include/linux/module.h:12, from net/netfilter/nf_tables_api.c:8: >> include/linux/export.h:67:2: warning: ISO C90 forbids mixed declarations and code [-Wdeclaration-after-statement] 67 | static const struct kernel_symbol __ksymtab_##sym \ | ^~~~~~ include/linux/export.h:108:2: note: in expansion of macro '__KSYMTAB_ENTRY' 108 | __KSYMTAB_ENTRY(sym, sec) | ^~~~~~~~~~~~~~~ include/linux/export.h:147:39: note: in expansion of macro '___EXPORT_SYMBOL' 147 | #define __EXPORT_SYMBOL(sym, sec, ns) ___EXPORT_SYMBOL(sym, sec, ns) | ^~~~~~~~~~~~~~~~ include/linux/export.h:155:34: note: in expansion of macro '__EXPORT_SYMBOL' 155 | #define _EXPORT_SYMBOL(sym, sec) __EXPORT_SYMBOL(sym, sec, "") | ^~~~~~~~~~~~~~~ include/linux/export.h:159:33: note: in expansion of macro '_EXPORT_SYMBOL' 159 | #define EXPORT_SYMBOL_GPL(sym) _EXPORT_SYMBOL(sym, "_gpl") | ^~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:4676:1: note: in expansion of macro 'EXPORT_SYMBOL_GPL' 4676 | EXPORT_SYMBOL_GPL(nf_tables_destroy_set); | ^~~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:4741:12: error: invalid storage class for function 'nft_ctx_init_from_elemattr' 4741 | static int nft_ctx_init_from_elemattr(struct nft_ctx *ctx, struct net *net, | ^~~~~~~~~~~~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:4763:12: error: invalid storage class for function 'nft_set_elem_expr_dump' 4763 | static int nft_set_elem_expr_dump(struct sk_buff *skb, | ^~~~~~~~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:4800:12: error: invalid storage class for function 'nf_tables_fill_setelem' 4800 | static int nf_tables_fill_setelem(struct sk_buff *skb, | ^~~~~~~~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:4886:12: error: invalid storage class for function 'nf_tables_dump_setelem' 4886 | static int nf_tables_dump_setelem(const struct nft_ctx *ctx, | ^~~~~~~~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:4902:12: error: invalid storage class for function 'nft_set_catchall_dump' 4902 | static int nft_set_catchall_dump(struct net *net, struct sk_buff *skb, | ^~~~~~~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:4925:12: error: invalid storage class for function 'nf_tables_dump_set' 4925 | static int nf_tables_dump_set(struct sk_buff *skb, struct netlink_callback *cb) | ^~~~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:5010:12: error: invalid storage class for function 'nf_tables_dump_set_start' 5010 | static int nf_tables_dump_set_start(struct netlink_callback *cb) | ^~~~~~~~~~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:5019:12: error: invalid storage class for function 'nf_tables_dump_set_done' 5019 | static int nf_tables_dump_set_done(struct netlink_callback *cb) | ^~~~~~~~~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:5025:12: error: invalid storage class for function 'nf_tables_fill_setelem_info' 5025 | static int nf_tables_fill_setelem_info(struct sk_buff *skb, | ^~~~~~~~~~~~~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:5064:12: error: invalid storage class for function 'nft_setelem_parse_flags' 5064 | static int nft_setelem_parse_flags(const struct nft_set *set, | ^~~~~~~~~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:5080:12: error: invalid storage class for function 'nft_setelem_parse_key' 5080 | static int nft_setelem_parse_key(struct nft_ctx *ctx, struct nft_set *set, | ^~~~~~~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:5098:12: error: invalid storage class for function 'nft_setelem_parse_data' 5098 | static int nft_setelem_parse_data(struct nft_ctx *ctx, struct nft_set *set, | ^~~~~~~~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:5117:14: error: invalid storage class for function 'nft_setelem_catchall_get' 5117 | static void *nft_setelem_catchall_get(const struct net *net, | ^~~~~~~~~~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:5138:12: error: invalid storage class for function 'nft_setelem_get' 5138 | static int nft_setelem_get(struct nft_ctx *ctx, struct nft_set *set, | ^~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:5157:12: error: invalid storage class for function 'nft_get_set_elem' 5157 | static int nft_get_set_elem(struct nft_ctx *ctx, struct nft_set *set, | ^~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:5214:12: error: invalid storage class for function 'nf_tables_getsetelem' 5214 | static int nf_tables_getsetelem(struct sk_buff *skb, | ^~~~~~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:5263:13: error: invalid storage class for function 'nf_tables_setelem_notify' 5263 | static void nf_tables_setelem_notify(const struct nft_ctx *ctx, | ^~~~~~~~~~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:5295:26: error: invalid storage class for function 'nft_trans_elem_alloc' 5295 | static struct nft_trans *nft_trans_elem_alloc(struct nft_ctx *ctx, | ^~~~~~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:5371:13: error: invalid storage class for function '__nft_set_elem_expr_destroy' 5371 | static void __nft_set_elem_expr_destroy(const struct nft_ctx *ctx, | ^~~~~~~~~~~~~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:5382:13: error: invalid storage class for function 'nft_set_elem_expr_destroy' 5382 | static void nft_set_elem_expr_destroy(const struct nft_ctx *ctx, | ^~~~~~~~~~~~~~~~~~~~~~~~~ In file included from include/linux/linkage.h:7, from include/linux/kernel.h:8, from include/linux/list.h:9, from include/linux/module.h:12, from net/netfilter/nf_tables_api.c:8: net/netfilter/nf_tables_api.c:5411:19: error: non-static declaration of 'nft_set_elem_destroy' follows static declaration 5411 | EXPORT_SYMBOL_GPL(nft_set_elem_destroy); | ^~~~~~~~~~~~~~~~~~~~ include/linux/export.h:98:21: note: in definition of macro '___EXPORT_SYMBOL' 98 | extern typeof(sym) sym; \ | ^~~ include/linux/export.h:155:34: note: in expansion of macro '__EXPORT_SYMBOL' 155 | #define _EXPORT_SYMBOL(sym, sec) __EXPORT_SYMBOL(sym, sec, "") | ^~~~~~~~~~~~~~~ include/linux/export.h:159:33: note: in expansion of macro '_EXPORT_SYMBOL' 159 | #define EXPORT_SYMBOL_GPL(sym) _EXPORT_SYMBOL(sym, "_gpl") | ^~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:5411:1: note: in expansion of macro 'EXPORT_SYMBOL_GPL' 5411 | EXPORT_SYMBOL_GPL(nft_set_elem_destroy); | ^~~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:5392:6: note: previous definition of 'nft_set_elem_destroy' was here 5392 | void nft_set_elem_destroy(const struct nft_set *set, void *elem, | ^~~~~~~~~~~~~~~~~~~~ In file included from include/linux/linkage.h:7, from include/linux/kernel.h:8, from include/linux/list.h:9, from include/linux/module.h:12, from net/netfilter/nf_tables_api.c:8: >> include/linux/export.h:67:2: warning: ISO C90 forbids mixed declarations and code [-Wdeclaration-after-statement] 67 | static const struct kernel_symbol __ksymtab_##sym \ | ^~~~~~ include/linux/export.h:108:2: note: in expansion of macro '__KSYMTAB_ENTRY' 108 | __KSYMTAB_ENTRY(sym, sec) | ^~~~~~~~~~~~~~~ include/linux/export.h:147:39: note: in expansion of macro '___EXPORT_SYMBOL' 147 | #define __EXPORT_SYMBOL(sym, sec, ns) ___EXPORT_SYMBOL(sym, sec, ns) | ^~~~~~~~~~~~~~~~ include/linux/export.h:155:34: note: in expansion of macro '__EXPORT_SYMBOL' 155 | #define _EXPORT_SYMBOL(sym, sec) __EXPORT_SYMBOL(sym, sec, "") | ^~~~~~~~~~~~~~~ include/linux/export.h:159:33: note: in expansion of macro '_EXPORT_SYMBOL' 159 | #define EXPORT_SYMBOL_GPL(sym) _EXPORT_SYMBOL(sym, "_gpl") | ^~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:5411:1: note: in expansion of macro 'EXPORT_SYMBOL_GPL' 5411 | EXPORT_SYMBOL_GPL(nft_set_elem_destroy); | ^~~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:5416:13: error: invalid storage class for function 'nf_tables_set_elem_destroy' 5416 | static void nf_tables_set_elem_destroy(const struct nft_ctx *ctx, | ^~~~~~~~~~~~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:5455:12: error: invalid storage class for function 'nft_set_elem_expr_setup' 5455 | static int nft_set_elem_expr_setup(struct nft_ctx *ctx, | ^~~~~~~~~~~~~~~~~~~~~~~ In file included from include/linux/linkage.h:7, from include/linux/kernel.h:8, from include/linux/list.h:9, from include/linux/module.h:12, from net/netfilter/nf_tables_api.c:8: net/netfilter/nf_tables_api.c:5502:19: error: non-static declaration of 'nft_set_catchall_lookup' follows static declaration 5502 | EXPORT_SYMBOL_GPL(nft_set_catchall_lookup); | ^~~~~~~~~~~~~~~~~~~~~~~ include/linux/export.h:98:21: note: in definition of macro '___EXPORT_SYMBOL' 98 | extern typeof(sym) sym; \ | ^~~ include/linux/export.h:155:34: note: in expansion of macro '__EXPORT_SYMBOL' 155 | #define _EXPORT_SYMBOL(sym, sec) __EXPORT_SYMBOL(sym, sec, "") | ^~~~~~~~~~~~~~~ include/linux/export.h:159:33: note: in expansion of macro '_EXPORT_SYMBOL' 159 | #define EXPORT_SYMBOL_GPL(sym) _EXPORT_SYMBOL(sym, "_gpl") | ^~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:5502:1: note: in expansion of macro 'EXPORT_SYMBOL_GPL' 5502 | EXPORT_SYMBOL_GPL(nft_set_catchall_lookup); | ^~~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:5486:21: note: previous definition of 'nft_set_catchall_lookup' was here 5486 | struct nft_set_ext *nft_set_catchall_lookup(const struct net *net, | ^~~~~~~~~~~~~~~~~~~~~~~ In file included from include/linux/linkage.h:7, from include/linux/kernel.h:8, from include/linux/list.h:9, from include/linux/module.h:12, from net/netfilter/nf_tables_api.c:8: >> include/linux/export.h:67:2: warning: ISO C90 forbids mixed declarations and code [-Wdeclaration-after-statement] 67 | static const struct kernel_symbol __ksymtab_##sym \ | ^~~~~~ include/linux/export.h:108:2: note: in expansion of macro '__KSYMTAB_ENTRY' 108 | __KSYMTAB_ENTRY(sym, sec) | ^~~~~~~~~~~~~~~ include/linux/export.h:147:39: note: in expansion of macro '___EXPORT_SYMBOL' 147 | #define __EXPORT_SYMBOL(sym, sec, ns) ___EXPORT_SYMBOL(sym, sec, ns) | ^~~~~~~~~~~~~~~~ include/linux/export.h:155:34: note: in expansion of macro '__EXPORT_SYMBOL' 155 | #define _EXPORT_SYMBOL(sym, sec) __EXPORT_SYMBOL(sym, sec, "") | ^~~~~~~~~~~~~~~ include/linux/export.h:159:33: note: in expansion of macro '_EXPORT_SYMBOL' 159 | #define EXPORT_SYMBOL_GPL(sym) _EXPORT_SYMBOL(sym, "_gpl") | ^~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:5502:1: note: in expansion of macro 'EXPORT_SYMBOL_GPL' 5502 | EXPORT_SYMBOL_GPL(nft_set_catchall_lookup); | ^~~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:5525:19: error: non-static declaration of 'nft_set_catchall_gc' follows static declaration 5525 | EXPORT_SYMBOL_GPL(nft_set_catchall_gc); | ^~~~~~~~~~~~~~~~~~~ include/linux/export.h:98:21: note: in definition of macro '___EXPORT_SYMBOL' 98 | extern typeof(sym) sym; \ | ^~~ include/linux/export.h:155:34: note: in expansion of macro '__EXPORT_SYMBOL' 155 | #define _EXPORT_SYMBOL(sym, sec) __EXPORT_SYMBOL(sym, sec, "") | ^~~~~~~~~~~~~~~ include/linux/export.h:159:33: note: in expansion of macro '_EXPORT_SYMBOL' 159 | #define EXPORT_SYMBOL_GPL(sym) _EXPORT_SYMBOL(sym, "_gpl") | ^~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:5525:1: note: in expansion of macro 'EXPORT_SYMBOL_GPL' 5525 | EXPORT_SYMBOL_GPL(nft_set_catchall_gc); | ^~~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:5504:7: note: previous definition of 'nft_set_catchall_gc' was here 5504 | void *nft_set_catchall_gc(const struct nft_set *set) | ^~~~~~~~~~~~~~~~~~~ In file included from include/linux/linkage.h:7, from include/linux/kernel.h:8, from include/linux/list.h:9, from include/linux/module.h:12, from net/netfilter/nf_tables_api.c:8: >> include/linux/export.h:67:2: warning: ISO C90 forbids mixed declarations and code [-Wdeclaration-after-statement] 67 | static const struct kernel_symbol __ksymtab_##sym \ | ^~~~~~ include/linux/export.h:108:2: note: in expansion of macro '__KSYMTAB_ENTRY' 108 | __KSYMTAB_ENTRY(sym, sec) | ^~~~~~~~~~~~~~~ include/linux/export.h:147:39: note: in expansion of macro '___EXPORT_SYMBOL' 147 | #define __EXPORT_SYMBOL(sym, sec, ns) ___EXPORT_SYMBOL(sym, sec, ns) | ^~~~~~~~~~~~~~~~ include/linux/export.h:155:34: note: in expansion of macro '__EXPORT_SYMBOL' 155 | #define _EXPORT_SYMBOL(sym, sec) __EXPORT_SYMBOL(sym, sec, "") | ^~~~~~~~~~~~~~~ include/linux/export.h:159:33: note: in expansion of macro '_EXPORT_SYMBOL' 159 | #define EXPORT_SYMBOL_GPL(sym) _EXPORT_SYMBOL(sym, "_gpl") | ^~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:5525:1: note: in expansion of macro 'EXPORT_SYMBOL_GPL' 5525 | EXPORT_SYMBOL_GPL(nft_set_catchall_gc); | ^~~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:5527:12: error: invalid storage class for function 'nft_setelem_catchall_insert' 5527 | static int nft_setelem_catchall_insert(const struct net *net, | ^~~~~~~~~~~~~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:5554:12: error: invalid storage class for function 'nft_setelem_insert' 5554 | static int nft_setelem_insert(const struct net *net, | ^~~~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:5569:13: error: invalid storage class for function 'nft_setelem_is_catchall' 5569 | static bool nft_setelem_is_catchall(const struct nft_set *set, | ^~~~~~~~~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:5581:13: error: invalid storage class for function 'nft_setelem_activate' 5581 | static void nft_setelem_activate(struct net *net, struct nft_set *set, | ^~~~~~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:5594:12: error: invalid storage class for function 'nft_setelem_catchall_deactivate' 5594 | static int nft_setelem_catchall_deactivate(const struct net *net, | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:5616:12: error: invalid storage class for function '__nft_setelem_deactivate' 5616 | static int __nft_setelem_deactivate(const struct net *net, | ^~~~~~~~~~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:5633:12: error: invalid storage class for function 'nft_setelem_deactivate' 5633 | static int nft_setelem_deactivate(const struct net *net, | ^~~~~~~~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:5647:13: error: invalid storage class for function 'nft_setelem_catchall_remove' 5647 | static void nft_setelem_catchall_remove(const struct net *net, | ^~~~~~~~~~~~~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:5662:13: error: invalid storage class for function 'nft_setelem_remove' 5662 | static void nft_setelem_remove(const struct net *net, | ^~~~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:5672:12: error: invalid storage class for function 'nft_add_set_elem' 5672 | static int nft_add_set_elem(struct nft_ctx *ctx, struct nft_set *set, | ^~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:5996:12: error: invalid storage class for function 'nf_tables_newsetelem' 5996 | static int nf_tables_newsetelem(struct sk_buff *skb, | ^~~~~~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:6073:13: error: invalid storage class for function 'nft_setelem_data_activate' 6073 | static void nft_setelem_data_activate(const struct net *net, | ^~~~~~~~~~~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:6085:13: error: invalid storage class for function 'nft_setelem_data_deactivate' 6085 | static void nft_setelem_data_deactivate(const struct net *net, | ^~~~~~~~~~~~~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:6097:12: error: invalid storage class for function 'nft_del_setelem' 6097 | static int nft_del_setelem(struct nft_ctx *ctx, struct nft_set *set, | ^~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:6177:12: error: invalid storage class for function 'nft_setelem_flush' 6177 | static int nft_setelem_flush(const struct nft_ctx *ctx, | ^~~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:6207:12: error: invalid storage class for function '__nft_set_catchall_flush' 6207 | static int __nft_set_catchall_flush(const struct nft_ctx *ctx, | ^~~~~~~~~~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:6226:12: error: invalid storage class for function 'nft_set_catchall_flush' 6226 | static int nft_set_catchall_flush(const struct nft_ctx *ctx, | ^~~~~~~~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:6250:12: error: invalid storage class for function 'nft_set_flush' 6250 | static int nft_set_flush(struct nft_ctx *ctx, struct nft_set *set, u8 genmask) | ^~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:6264:12: error: invalid storage class for function 'nf_tables_delsetelem' 6264 | static int nf_tables_delsetelem(struct sk_buff *skb, | ^~~~~~~~~~~~~~~~~~~~ In file included from include/linux/linkage.h:7, from include/linux/kernel.h:8, from include/linux/list.h:9, from include/linux/module.h:12, from net/netfilter/nf_tables_api.c:8: net/netfilter/nf_tables_api.c:6342:19: error: non-static declaration of 'nft_register_obj' follows static declaration 6342 | EXPORT_SYMBOL_GPL(nft_register_obj); | ^~~~~~~~~~~~~~~~ include/linux/export.h:98:21: note: in definition of macro '___EXPORT_SYMBOL' 98 | extern typeof(sym) sym; \ | ^~~ include/linux/export.h:155:34: note: in expansion of macro '__EXPORT_SYMBOL' 155 | #define _EXPORT_SYMBOL(sym, sec) __EXPORT_SYMBOL(sym, sec, "") | ^~~~~~~~~~~~~~~ include/linux/export.h:159:33: note: in expansion of macro '_EXPORT_SYMBOL' 159 | #define EXPORT_SYMBOL_GPL(sym) _EXPORT_SYMBOL(sym, "_gpl") | ^~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:6342:1: note: in expansion of macro 'EXPORT_SYMBOL_GPL' 6342 | EXPORT_SYMBOL_GPL(nft_register_obj); | ^~~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:6332:5: note: previous definition of 'nft_register_obj' was here 6332 | int nft_register_obj(struct nft_object_type *obj_type) | ^~~~~~~~~~~~~~~~ In file included from include/linux/linkage.h:7, from include/linux/kernel.h:8, from include/linux/list.h:9, from include/linux/module.h:12, from net/netfilter/nf_tables_api.c:8: >> include/linux/export.h:67:2: warning: ISO C90 forbids mixed declarations and code [-Wdeclaration-after-statement] 67 | static const struct kernel_symbol __ksymtab_##sym \ | ^~~~~~ include/linux/export.h:108:2: note: in expansion of macro '__KSYMTAB_ENTRY' 108 | __KSYMTAB_ENTRY(sym, sec) | ^~~~~~~~~~~~~~~ include/linux/export.h:147:39: note: in expansion of macro '___EXPORT_SYMBOL' 147 | #define __EXPORT_SYMBOL(sym, sec, ns) ___EXPORT_SYMBOL(sym, sec, ns) | ^~~~~~~~~~~~~~~~ include/linux/export.h:155:34: note: in expansion of macro '__EXPORT_SYMBOL' 155 | #define _EXPORT_SYMBOL(sym, sec) __EXPORT_SYMBOL(sym, sec, "") | ^~~~~~~~~~~~~~~ include/linux/export.h:159:33: note: in expansion of macro '_EXPORT_SYMBOL' 159 | #define EXPORT_SYMBOL_GPL(sym) _EXPORT_SYMBOL(sym, "_gpl") | ^~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:6342:1: note: in expansion of macro 'EXPORT_SYMBOL_GPL' 6342 | EXPORT_SYMBOL_GPL(nft_register_obj); | ^~~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:6356:19: error: non-static declaration of 'nft_unregister_obj' follows static declaration 6356 | EXPORT_SYMBOL_GPL(nft_unregister_obj); | ^~~~~~~~~~~~~~~~~~ include/linux/export.h:98:21: note: in definition of macro '___EXPORT_SYMBOL' 98 | extern typeof(sym) sym; \ | ^~~ include/linux/export.h:155:34: note: in expansion of macro '__EXPORT_SYMBOL' 155 | #define _EXPORT_SYMBOL(sym, sec) __EXPORT_SYMBOL(sym, sec, "") | ^~~~~~~~~~~~~~~ include/linux/export.h:159:33: note: in expansion of macro '_EXPORT_SYMBOL' 159 | #define EXPORT_SYMBOL_GPL(sym) _EXPORT_SYMBOL(sym, "_gpl") | ^~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:6356:1: note: in expansion of macro 'EXPORT_SYMBOL_GPL' 6356 | EXPORT_SYMBOL_GPL(nft_unregister_obj); | ^~~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:6350:6: note: previous definition of 'nft_unregister_obj' was here 6350 | void nft_unregister_obj(struct nft_object_type *obj_type) | ^~~~~~~~~~~~~~~~~~ In file included from include/linux/linkage.h:7, from include/linux/kernel.h:8, from include/linux/list.h:9, from include/linux/module.h:12, from net/netfilter/nf_tables_api.c:8: >> include/linux/export.h:67:2: warning: ISO C90 forbids mixed declarations and code [-Wdeclaration-after-statement] 67 | static const struct kernel_symbol __ksymtab_##sym \ | ^~~~~~ include/linux/export.h:108:2: note: in expansion of macro '__KSYMTAB_ENTRY' 108 | __KSYMTAB_ENTRY(sym, sec) | ^~~~~~~~~~~~~~~ include/linux/export.h:147:39: note: in expansion of macro '___EXPORT_SYMBOL' 147 | #define __EXPORT_SYMBOL(sym, sec, ns) ___EXPORT_SYMBOL(sym, sec, ns) | ^~~~~~~~~~~~~~~~ include/linux/export.h:155:34: note: in expansion of macro '__EXPORT_SYMBOL' 155 | #define _EXPORT_SYMBOL(sym, sec) __EXPORT_SYMBOL(sym, sec, "") | ^~~~~~~~~~~~~~~ include/linux/export.h:159:33: note: in expansion of macro '_EXPORT_SYMBOL' 159 | #define EXPORT_SYMBOL_GPL(sym) _EXPORT_SYMBOL(sym, "_gpl") | ^~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:6356:1: note: in expansion of macro 'EXPORT_SYMBOL_GPL' 6356 | EXPORT_SYMBOL_GPL(nft_unregister_obj); | ^~~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:6390:19: error: non-static declaration of 'nft_obj_lookup' follows static declaration 6390 | EXPORT_SYMBOL_GPL(nft_obj_lookup); | ^~~~~~~~~~~~~~ include/linux/export.h:98:21: note: in definition of macro '___EXPORT_SYMBOL' 98 | extern typeof(sym) sym; \ | ^~~ include/linux/export.h:155:34: note: in expansion of macro '__EXPORT_SYMBOL' 155 | #define _EXPORT_SYMBOL(sym, sec) __EXPORT_SYMBOL(sym, sec, "") | ^~~~~~~~~~~~~~~ include/linux/export.h:159:33: note: in expansion of macro '_EXPORT_SYMBOL' 159 | #define EXPORT_SYMBOL_GPL(sym) _EXPORT_SYMBOL(sym, "_gpl") | ^~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:6390:1: note: in expansion of macro 'EXPORT_SYMBOL_GPL' 6390 | EXPORT_SYMBOL_GPL(nft_obj_lookup); | ^~~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:6358:20: note: previous definition of 'nft_obj_lookup' was here 6358 | struct nft_object *nft_obj_lookup(const struct net *net, | ^~~~~~~~~~~~~~ In file included from include/linux/linkage.h:7, from include/linux/kernel.h:8, from include/linux/list.h:9, from include/linux/module.h:12, from net/netfilter/nf_tables_api.c:8: >> include/linux/export.h:67:2: warning: ISO C90 forbids mixed declarations and code [-Wdeclaration-after-statement] 67 | static const struct kernel_symbol __ksymtab_##sym \ | ^~~~~~ include/linux/export.h:108:2: note: in expansion of macro '__KSYMTAB_ENTRY' 108 | __KSYMTAB_ENTRY(sym, sec) | ^~~~~~~~~~~~~~~ include/linux/export.h:147:39: note: in expansion of macro '___EXPORT_SYMBOL' 147 | #define __EXPORT_SYMBOL(sym, sec, ns) ___EXPORT_SYMBOL(sym, sec, ns) | ^~~~~~~~~~~~~~~~ include/linux/export.h:155:34: note: in expansion of macro '__EXPORT_SYMBOL' 155 | #define _EXPORT_SYMBOL(sym, sec) __EXPORT_SYMBOL(sym, sec, "") | ^~~~~~~~~~~~~~~ include/linux/export.h:159:33: note: in expansion of macro '_EXPORT_SYMBOL' 159 | #define EXPORT_SYMBOL_GPL(sym) _EXPORT_SYMBOL(sym, "_gpl") | ^~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:6390:1: note: in expansion of macro 'EXPORT_SYMBOL_GPL' 6390 | EXPORT_SYMBOL_GPL(nft_obj_lookup); | ^~~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:6392:27: error: invalid storage class for function 'nft_obj_lookup_byhandle' 6392 | static struct nft_object *nft_obj_lookup_byhandle(const struct nft_table *table, | ^~~~~~~~~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:6419:27: error: invalid storage class for function 'nft_obj_init' 6419 | static struct nft_object *nft_obj_init(const struct nft_ctx *ctx, | ^~~~~~~~~~~~ net/netfilter/nf_tables_api.c:6472:12: error: invalid storage class for function 'nft_object_dump' 6472 | static int nft_object_dump(struct sk_buff *skb, unsigned int attr, | ^~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:6489:38: error: invalid storage class for function '__nft_obj_type_get' 6489 | static const struct nft_object_type *__nft_obj_type_get(u32 objtype) | ^~~~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:6501:1: error: invalid storage class for function 'nft_obj_type_get' 6501 | nft_obj_type_get(struct net *net, u32 objtype) | ^~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:6519:12: error: invalid storage class for function 'nf_tables_updobj' 6519 | static int nf_tables_updobj(const struct nft_ctx *ctx, | ^~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:6551:12: error: invalid storage class for function 'nf_tables_newobj' 6551 | static int nf_tables_newobj(struct sk_buff *skb, const struct nfnl_info *info, | ^~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:6657:12: error: invalid storage class for function 'nf_tables_fill_obj_info' 6657 | static int nf_tables_fill_obj_info(struct sk_buff *skb, struct net *net, | ^~~~~~~~~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:6696:12: error: invalid storage class for function 'nf_tables_dump_obj' 6696 | static int nf_tables_dump_obj(struct sk_buff *skb, struct netlink_callback *cb) | ^~~~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:6768:12: error: invalid storage class for function 'nf_tables_dump_obj_start' 6768 | static int nf_tables_dump_obj_start(struct netlink_callback *cb) | ^~~~~~~~~~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:6794:12: error: invalid storage class for function 'nf_tables_dump_obj_done' 6794 | static int nf_tables_dump_obj_done(struct netlink_callback *cb) | ^~~~~~~~~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:6807:12: error: invalid storage class for function 'nf_tables_getobj' 6807 | static int nf_tables_getobj(struct sk_buff *skb, const struct nfnl_info *info, | ^~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:6886:13: error: invalid storage class for function 'nft_obj_destroy' 6886 | static void nft_obj_destroy(const struct nft_ctx *ctx, struct nft_object *obj) | ^~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:6897:12: error: invalid storage class for function 'nf_tables_delobj' 6897 | static int nf_tables_delobj(struct sk_buff *skb, const struct nfnl_info *info, | ^~~~~~~~~~~~~~~~ In file included from include/linux/linkage.h:7, from include/linux/kernel.h:8, from include/linux/list.h:9, from include/linux/module.h:12, from net/netfilter/nf_tables_api.c:8: net/netfilter/nf_tables_api.c:6984:19: error: non-static declaration of 'nft_obj_notify' follows static declaration 6984 | EXPORT_SYMBOL_GPL(nft_obj_notify); | ^~~~~~~~~~~~~~ include/linux/export.h:98:21: note: in definition of macro '___EXPORT_SYMBOL' 98 | extern typeof(sym) sym; \ | ^~~ include/linux/export.h:155:34: note: in expansion of macro '__EXPORT_SYMBOL' 155 | #define _EXPORT_SYMBOL(sym, sec) __EXPORT_SYMBOL(sym, sec, "") | ^~~~~~~~~~~~~~~ include/linux/export.h:159:33: note: in expansion of macro '_EXPORT_SYMBOL' 159 | #define EXPORT_SYMBOL_GPL(sym) _EXPORT_SYMBOL(sym, "_gpl") | ^~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:6984:1: note: in expansion of macro 'EXPORT_SYMBOL_GPL' 6984 | EXPORT_SYMBOL_GPL(nft_obj_notify); | ^~~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:6945:6: note: previous definition of 'nft_obj_notify' was here 6945 | void nft_obj_notify(struct net *net, const struct nft_table *table, | ^~~~~~~~~~~~~~ In file included from include/linux/linkage.h:7, from include/linux/kernel.h:8, from include/linux/list.h:9, from include/linux/module.h:12, from net/netfilter/nf_tables_api.c:8: >> include/linux/export.h:67:2: warning: ISO C90 forbids mixed declarations and code [-Wdeclaration-after-statement] 67 | static const struct kernel_symbol __ksymtab_##sym \ | ^~~~~~ include/linux/export.h:108:2: note: in expansion of macro '__KSYMTAB_ENTRY' 108 | __KSYMTAB_ENTRY(sym, sec) | ^~~~~~~~~~~~~~~ include/linux/export.h:147:39: note: in expansion of macro '___EXPORT_SYMBOL' 147 | #define __EXPORT_SYMBOL(sym, sec, ns) ___EXPORT_SYMBOL(sym, sec, ns) | ^~~~~~~~~~~~~~~~ include/linux/export.h:155:34: note: in expansion of macro '__EXPORT_SYMBOL' 155 | #define _EXPORT_SYMBOL(sym, sec) __EXPORT_SYMBOL(sym, sec, "") | ^~~~~~~~~~~~~~~ include/linux/export.h:159:33: note: in expansion of macro '_EXPORT_SYMBOL' 159 | #define EXPORT_SYMBOL_GPL(sym) _EXPORT_SYMBOL(sym, "_gpl") | ^~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:6984:1: note: in expansion of macro 'EXPORT_SYMBOL_GPL' 6984 | EXPORT_SYMBOL_GPL(nft_obj_notify); | ^~~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:6986:13: error: invalid storage class for function 'nf_tables_obj_notify' 6986 | static void nf_tables_obj_notify(const struct nft_ctx *ctx, | ^~~~~~~~~~~~~~~~~~~~ In file included from include/linux/linkage.h:7, from include/linux/kernel.h:8, from include/linux/list.h:9, from include/linux/module.h:12, from net/netfilter/nf_tables_api.c:8: net/netfilter/nf_tables_api.c:7002:19: error: non-static declaration of 'nft_register_flowtable_type' follows static declaration 7002 | EXPORT_SYMBOL_GPL(nft_register_flowtable_type); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~ include/linux/export.h:98:21: note: in definition of macro '___EXPORT_SYMBOL' 98 | extern typeof(sym) sym; \ | ^~~ include/linux/export.h:155:34: note: in expansion of macro '__EXPORT_SYMBOL' 155 | #define _EXPORT_SYMBOL(sym, sec) __EXPORT_SYMBOL(sym, sec, "") | ^~~~~~~~~~~~~~~ include/linux/export.h:159:33: note: in expansion of macro '_EXPORT_SYMBOL' 159 | #define EXPORT_SYMBOL_GPL(sym) _EXPORT_SYMBOL(sym, "_gpl") | ^~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:7002:1: note: in expansion of macro 'EXPORT_SYMBOL_GPL' 7002 | EXPORT_SYMBOL_GPL(nft_register_flowtable_type); | ^~~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:6996:6: note: previous definition of 'nft_register_flowtable_type' was here 6996 | void nft_register_flowtable_type(struct nf_flowtable_type *type) | ^~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from include/linux/linkage.h:7, from include/linux/kernel.h:8, from include/linux/list.h:9, from include/linux/module.h:12, from net/netfilter/nf_tables_api.c:8: >> include/linux/export.h:67:2: warning: ISO C90 forbids mixed declarations and code [-Wdeclaration-after-statement] 67 | static const struct kernel_symbol __ksymtab_##sym \ | ^~~~~~ include/linux/export.h:108:2: note: in expansion of macro '__KSYMTAB_ENTRY' 108 | __KSYMTAB_ENTRY(sym, sec) | ^~~~~~~~~~~~~~~ include/linux/export.h:147:39: note: in expansion of macro '___EXPORT_SYMBOL' 147 | #define __EXPORT_SYMBOL(sym, sec, ns) ___EXPORT_SYMBOL(sym, sec, ns) | ^~~~~~~~~~~~~~~~ include/linux/export.h:155:34: note: in expansion of macro '__EXPORT_SYMBOL' 155 | #define _EXPORT_SYMBOL(sym, sec) __EXPORT_SYMBOL(sym, sec, "") | ^~~~~~~~~~~~~~~ include/linux/export.h:159:33: note: in expansion of macro '_EXPORT_SYMBOL' 159 | #define EXPORT_SYMBOL_GPL(sym) _EXPORT_SYMBOL(sym, "_gpl") | ^~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:7002:1: note: in expansion of macro 'EXPORT_SYMBOL_GPL' 7002 | EXPORT_SYMBOL_GPL(nft_register_flowtable_type); | ^~~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:7010:19: error: non-static declaration of 'nft_unregister_flowtable_type' follows static declaration 7010 | EXPORT_SYMBOL_GPL(nft_unregister_flowtable_type); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~ include/linux/export.h:98:21: note: in definition of macro '___EXPORT_SYMBOL' 98 | extern typeof(sym) sym; \ | ^~~ include/linux/export.h:155:34: note: in expansion of macro '__EXPORT_SYMBOL' 155 | #define _EXPORT_SYMBOL(sym, sec) __EXPORT_SYMBOL(sym, sec, "") | ^~~~~~~~~~~~~~~ include/linux/export.h:159:33: note: in expansion of macro '_EXPORT_SYMBOL' 159 | #define EXPORT_SYMBOL_GPL(sym) _EXPORT_SYMBOL(sym, "_gpl") | ^~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:7010:1: note: in expansion of macro 'EXPORT_SYMBOL_GPL' 7010 | EXPORT_SYMBOL_GPL(nft_unregister_flowtable_type); | ^~~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:7004:6: note: previous definition of 'nft_unregister_flowtable_type' was here 7004 | void nft_unregister_flowtable_type(struct nf_flowtable_type *type) | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from include/linux/linkage.h:7, from include/linux/kernel.h:8, from include/linux/list.h:9, from include/linux/module.h:12, from net/netfilter/nf_tables_api.c:8: >> include/linux/export.h:67:2: warning: ISO C90 forbids mixed declarations and code [-Wdeclaration-after-statement] 67 | static const struct kernel_symbol __ksymtab_##sym \ | ^~~~~~ include/linux/export.h:108:2: note: in expansion of macro '__KSYMTAB_ENTRY' 108 | __KSYMTAB_ENTRY(sym, sec) | ^~~~~~~~~~~~~~~ include/linux/export.h:147:39: note: in expansion of macro '___EXPORT_SYMBOL' 147 | #define __EXPORT_SYMBOL(sym, sec, ns) ___EXPORT_SYMBOL(sym, sec, ns) | ^~~~~~~~~~~~~~~~ include/linux/export.h:155:34: note: in expansion of macro '__EXPORT_SYMBOL' 155 | #define _EXPORT_SYMBOL(sym, sec) __EXPORT_SYMBOL(sym, sec, "") | ^~~~~~~~~~~~~~~ include/linux/export.h:159:33: note: in expansion of macro '_EXPORT_SYMBOL' 159 | #define EXPORT_SYMBOL_GPL(sym) _EXPORT_SYMBOL(sym, "_gpl") | ^~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:7010:1: note: in expansion of macro 'EXPORT_SYMBOL_GPL' 7010 | EXPORT_SYMBOL_GPL(nft_unregister_flowtable_type); | ^~~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:7034:19: error: non-static declaration of 'nft_flowtable_lookup' follows static declaration 7034 | EXPORT_SYMBOL_GPL(nft_flowtable_lookup); | ^~~~~~~~~~~~~~~~~~~~ include/linux/export.h:98:21: note: in definition of macro '___EXPORT_SYMBOL' 98 | extern typeof(sym) sym; \ | ^~~ include/linux/export.h:155:34: note: in expansion of macro '__EXPORT_SYMBOL' 155 | #define _EXPORT_SYMBOL(sym, sec) __EXPORT_SYMBOL(sym, sec, "") | ^~~~~~~~~~~~~~~ include/linux/export.h:159:33: note: in expansion of macro '_EXPORT_SYMBOL' 159 | #define EXPORT_SYMBOL_GPL(sym) _EXPORT_SYMBOL(sym, "_gpl") | ^~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:7034:1: note: in expansion of macro 'EXPORT_SYMBOL_GPL' 7034 | EXPORT_SYMBOL_GPL(nft_flowtable_lookup); | ^~~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:7022:23: note: previous definition of 'nft_flowtable_lookup' was here 7022 | struct nft_flowtable *nft_flowtable_lookup(const struct nft_table *table, | ^~~~~~~~~~~~~~~~~~~~ In file included from include/linux/linkage.h:7, from include/linux/kernel.h:8, from include/linux/list.h:9, from include/linux/module.h:12, from net/netfilter/nf_tables_api.c:8: >> include/linux/export.h:67:2: warning: ISO C90 forbids mixed declarations and code [-Wdeclaration-after-statement] 67 | static const struct kernel_symbol __ksymtab_##sym \ | ^~~~~~ include/linux/export.h:108:2: note: in expansion of macro '__KSYMTAB_ENTRY' 108 | __KSYMTAB_ENTRY(sym, sec) | ^~~~~~~~~~~~~~~ include/linux/export.h:147:39: note: in expansion of macro '___EXPORT_SYMBOL' 147 | #define __EXPORT_SYMBOL(sym, sec, ns) ___EXPORT_SYMBOL(sym, sec, ns) | ^~~~~~~~~~~~~~~~ include/linux/export.h:155:34: note: in expansion of macro '__EXPORT_SYMBOL' 155 | #define _EXPORT_SYMBOL(sym, sec) __EXPORT_SYMBOL(sym, sec, "") | ^~~~~~~~~~~~~~~ include/linux/export.h:159:33: note: in expansion of macro '_EXPORT_SYMBOL' 159 | #define EXPORT_SYMBOL_GPL(sym) _EXPORT_SYMBOL(sym, "_gpl") | ^~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:7034:1: note: in expansion of macro 'EXPORT_SYMBOL_GPL' 7034 | EXPORT_SYMBOL_GPL(nft_flowtable_lookup); | ^~~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:7050:19: error: non-static declaration of 'nf_tables_deactivate_flowtable' follows static declaration 7050 | EXPORT_SYMBOL_GPL(nf_tables_deactivate_flowtable); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ include/linux/export.h:98:21: note: in definition of macro '___EXPORT_SYMBOL' 98 | extern typeof(sym) sym; \ | ^~~ include/linux/export.h:155:34: note: in expansion of macro '__EXPORT_SYMBOL' 155 | #define _EXPORT_SYMBOL(sym, sec) __EXPORT_SYMBOL(sym, sec, "") | ^~~~~~~~~~~~~~~ include/linux/export.h:159:33: note: in expansion of macro '_EXPORT_SYMBOL' 159 | #define EXPORT_SYMBOL_GPL(sym) _EXPORT_SYMBOL(sym, "_gpl") | ^~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:7050:1: note: in expansion of macro 'EXPORT_SYMBOL_GPL' 7050 | EXPORT_SYMBOL_GPL(nf_tables_deactivate_flowtable); | ^~~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:7036:6: note: previous definition of 'nf_tables_deactivate_flowtable' was here 7036 | void nf_tables_deactivate_flowtable(const struct nft_ctx *ctx, | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from include/linux/linkage.h:7, from include/linux/kernel.h:8, from include/linux/list.h:9, from include/linux/module.h:12, from net/netfilter/nf_tables_api.c:8: include/linux/export.h:67:2: warning: ISO C90 forbids mixed declarations and code [-Wdeclaration-after-statement] 67 | static const struct kernel_symbol __ksymtab_##sym \ | ^~~~~~ include/linux/export.h:108:2: note: in expansion of macro '__KSYMTAB_ENTRY' 108 | __KSYMTAB_ENTRY(sym, sec) | ^~~~~~~~~~~~~~~ include/linux/export.h:147:39: note: in expansion of macro '___EXPORT_SYMBOL' 147 | #define __EXPORT_SYMBOL(sym, sec, ns) ___EXPORT_SYMBOL(sym, sec, ns) | ^~~~~~~~~~~~~~~~ include/linux/export.h:155:34: note: in expansion of macro '__EXPORT_SYMBOL' 155 | #define _EXPORT_SYMBOL(sym, sec) __EXPORT_SYMBOL(sym, sec, "") | ^~~~~~~~~~~~~~~ include/linux/export.h:159:33: note: in expansion of macro '_EXPORT_SYMBOL' 159 | #define EXPORT_SYMBOL_GPL(sym) _EXPORT_SYMBOL(sym, "_gpl") | ^~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:7050:1: note: in expansion of macro 'EXPORT_SYMBOL_GPL' 7050 | EXPORT_SYMBOL_GPL(nf_tables_deactivate_flowtable); | ^~~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:7053:1: error: invalid storage class for function 'nft_flowtable_lookup_byhandle' 7053 | nft_flowtable_lookup_byhandle(const struct nft_table *table, | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:7078:12: error: invalid storage class for function 'nft_flowtable_parse_hook' 7078 | static int nft_flowtable_parse_hook(const struct nft_ctx *ctx, | ^~~~~~~~~~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:7144:40: error: invalid storage class for function '__nft_flowtable_type_get' 7144 | static const struct nf_flowtable_type *__nft_flowtable_type_get(u8 family) | ^~~~~~~~~~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:7156:1: error: invalid storage class for function 'nft_flowtable_type_get' 7156 | nft_flowtable_type_get(struct net *net, u8 family) | ^~~~~~~~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:7175:13: error: invalid storage class for function 'nft_unregister_flowtable_hook' 7175 | static void nft_unregister_flowtable_hook(struct net *net, | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:7184:13: error: invalid storage class for function 'nft_unregister_flowtable_net_hooks' 7184 | static void nft_unregister_flowtable_net_hooks(struct net *net, | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:7193:12: error: invalid storage class for function 'nft_register_flowtable_net_hooks' 7193 | static int nft_register_flowtable_net_hooks(struct net *net, | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:7248:13: error: invalid storage class for function 'nft_flowtable_hooks_destroy' 7248 | static void nft_flowtable_hooks_destroy(struct list_head *hook_list) | ^~~~~~~~~~~~~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:7258:12: error: invalid storage class for function 'nft_flowtable_update' 7258 | static int nft_flowtable_update(struct nft_ctx *ctx, const struct nlmsghdr *nlh, | ^~~~~~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:7327:12: error: invalid storage class for function 'nf_tables_newflowtable' 7327 | static int nf_tables_newflowtable(struct sk_buff *skb, | ^~~~~~~~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:7454:13: error: invalid storage class for function 'nft_flowtable_hook_release' 7454 | static void nft_flowtable_hook_release(struct nft_flowtable_hook *flowtable_hook) | ^~~~~~~~~~~~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:7464:12: error: invalid storage class for function 'nft_delflowtable_hook' 7464 | static int nft_delflowtable_hook(struct nft_ctx *ctx, | ^~~~~~~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:7516:12: error: invalid storage class for function 'nf_tables_delflowtable' 7516 | static int nf_tables_delflowtable(struct sk_buff *skb, | ^~~~~~~~~~~~~~~~~~~~~~ net/netfilter/nf_tables_api.c:7568:12: error: invalid storage class for function 'nf_tables_fill_flowtable_info' 7568 | static int nf_tables_fill_flowtable_info(struct sk_buff *skb, struct net *net, | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~ vim +67 include/linux/export.h f50169324df4ad Paul Gortmaker 2011-05-23 41 7290d58095712a Ard Biesheuvel 2018-08-21 42 #ifdef CONFIG_HAVE_ARCH_PREL32_RELOCATIONS 7290d58095712a Ard Biesheuvel 2018-08-21 43 #include 7290d58095712a Ard Biesheuvel 2018-08-21 44 /* 7290d58095712a Ard Biesheuvel 2018-08-21 45 * Emit the ksymtab entry as a pair of relative references: this reduces 7290d58095712a Ard Biesheuvel 2018-08-21 46 * the size by half on 64-bit architectures, and eliminates the need for 7290d58095712a Ard Biesheuvel 2018-08-21 47 * absolute relocations that require runtime processing on relocatable 7290d58095712a Ard Biesheuvel 2018-08-21 48 * kernels. 7290d58095712a Ard Biesheuvel 2018-08-21 49 */ 7290d58095712a Ard Biesheuvel 2018-08-21 50 #define __KSYMTAB_ENTRY(sym, sec) \ 7290d58095712a Ard Biesheuvel 2018-08-21 51 __ADDRESSABLE(sym) \ 7290d58095712a Ard Biesheuvel 2018-08-21 52 asm(" .section \"___ksymtab" sec "+" #sym "\", \"a\" \n" \ ed13fc33f76303 Matthias Maennich 2019-09-06 53 " .balign 4 \n" \ 7290d58095712a Ard Biesheuvel 2018-08-21 54 "__ksymtab_" #sym ": \n" \ 7290d58095712a Ard Biesheuvel 2018-08-21 55 " .long " #sym "- . \n" \ 7290d58095712a Ard Biesheuvel 2018-08-21 56 " .long __kstrtab_" #sym "- . \n" \ c3a6cf19e695c8 Masahiro Yamada 2019-10-18 57 " .long __kstrtabns_" #sym "- . \n" \ 7290d58095712a Ard Biesheuvel 2018-08-21 58 " .previous \n") 7290d58095712a Ard Biesheuvel 2018-08-21 59 7290d58095712a Ard Biesheuvel 2018-08-21 60 struct kernel_symbol { 7290d58095712a Ard Biesheuvel 2018-08-21 61 int value_offset; 7290d58095712a Ard Biesheuvel 2018-08-21 62 int name_offset; 8651ec01daedad Matthias Maennich 2019-09-06 63 int namespace_offset; 7290d58095712a Ard Biesheuvel 2018-08-21 64 }; 7290d58095712a Ard Biesheuvel 2018-08-21 65 #else 7290d58095712a Ard Biesheuvel 2018-08-21 66 #define __KSYMTAB_ENTRY(sym, sec) \ 7290d58095712a Ard Biesheuvel 2018-08-21 @67 static const struct kernel_symbol __ksymtab_##sym \ 7290d58095712a Ard Biesheuvel 2018-08-21 68 __attribute__((section("___ksymtab" sec "+" #sym), used)) \ ed13fc33f76303 Matthias Maennich 2019-09-06 69 __aligned(sizeof(void *)) \ c3a6cf19e695c8 Masahiro Yamada 2019-10-18 70 = { (unsigned long)&sym, __kstrtab_##sym, __kstrtabns_##sym } 7290d58095712a Ard Biesheuvel 2018-08-21 71 --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org