* Re: [PATCH nf 2/2] netfilter: nf_tables: do not allow to delete table with owner by handle
2021-06-22 10:13 ` [PATCH nf 2/2] netfilter: nf_tables: do not allow to delete table with owner by handle Pablo Neira Ayuso
@ 2021-06-22 13:37 ` kernel test robot
2021-06-22 14:35 ` kernel test robot
1 sibling, 0 replies; 4+ messages in thread
From: kernel test robot @ 2021-06-22 13:37 UTC (permalink / raw)
To: Pablo Neira Ayuso, netfilter-devel; +Cc: kbuild-all
[-- Attachment #1: Type: text/plain, Size: 31008 bytes --]
Hi Pablo,
I love your patch! Yet something to improve:
[auto build test ERROR 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: i386-randconfig-a011-20210622 (attached as .config)
compiler: gcc-9 (Debian 9.3.0-22) 9.3.0
reproduce (this is a W=1 build):
# 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
make W=1 ARCH=i386
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
All error/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/export.h:43,
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/compiler.h:225:2: warning: ISO C90 forbids mixed declarations and code [-Wdeclaration-after-statement]
225 | static void * __section(".discard.addressable") __used \
| ^~~~~~
include/linux/export.h:51:2: note: in expansion of macro '__ADDRESSABLE'
51 | __ADDRESSABLE(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:684:1: warning: ISO C90 forbids mixed declarations and code [-Wdeclaration-after-statement]
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/export.h:43,
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/compiler.h:225:2: warning: ISO C90 forbids mixed declarations and code [-Wdeclaration-after-statement]
225 | static void * __section(".discard.addressable") __used \
| ^~~~~~
include/linux/export.h:51:2: note: in expansion of macro '__ADDRESSABLE'
51 | __ADDRESSABLE(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:1332:1: warning: ISO C90 forbids mixed declarations and code [-Wdeclaration-after-statement]
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:
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'
vim +/nf_tables_alloc_handle +605 net/netfilter/nf_tables_api.c
3ecbfd65f50e5f Harsha Sharma 2017-12-27 604
96518518cc417b Patrick McHardy 2013-10-14 @605 static inline u64 nf_tables_alloc_handle(struct nft_table *table)
96518518cc417b Patrick McHardy 2013-10-14 606 {
96518518cc417b Patrick McHardy 2013-10-14 607 return ++table->hgenerator;
96518518cc417b Patrick McHardy 2013-10-14 608 }
96518518cc417b Patrick McHardy 2013-10-14 609
32537e91847a56 Pablo Neira Ayuso 2018-03-27 610 static const struct nft_chain_type *chain_type[NFPROTO_NUMPROTO][NFT_CHAIN_T_MAX];
9370761c56b66a Pablo Neira Ayuso 2013-10-10 611
826035498ec14b Pablo Neira Ayuso 2020-01-21 612 static const struct nft_chain_type *
826035498ec14b Pablo Neira Ayuso 2020-01-21 @613 __nft_chain_type_get(u8 family, enum nft_chain_types type)
826035498ec14b Pablo Neira Ayuso 2020-01-21 614 {
826035498ec14b Pablo Neira Ayuso 2020-01-21 615 if (family >= NFPROTO_NUMPROTO ||
826035498ec14b Pablo Neira Ayuso 2020-01-21 616 type >= NFT_CHAIN_T_MAX)
826035498ec14b Pablo Neira Ayuso 2020-01-21 617 return NULL;
826035498ec14b Pablo Neira Ayuso 2020-01-21 618
826035498ec14b Pablo Neira Ayuso 2020-01-21 619 return chain_type[family][type];
826035498ec14b Pablo Neira Ayuso 2020-01-21 620 }
826035498ec14b Pablo Neira Ayuso 2020-01-21 621
32537e91847a56 Pablo Neira Ayuso 2018-03-27 622 static const struct nft_chain_type *
1ea26cca52e46c Pablo Neira Ayuso 2017-12-19 @623 __nf_tables_chain_type_lookup(const struct nlattr *nla, u8 family)
9370761c56b66a Pablo Neira Ayuso 2013-10-10 624 {
826035498ec14b Pablo Neira Ayuso 2020-01-21 625 const struct nft_chain_type *type;
9370761c56b66a Pablo Neira Ayuso 2013-10-10 626 int i;
9370761c56b66a Pablo Neira Ayuso 2013-10-10 627
9370761c56b66a Pablo Neira Ayuso 2013-10-10 628 for (i = 0; i < NFT_CHAIN_T_MAX; i++) {
826035498ec14b Pablo Neira Ayuso 2020-01-21 629 type = __nft_chain_type_get(family, i);
826035498ec14b Pablo Neira Ayuso 2020-01-21 630 if (!type)
826035498ec14b Pablo Neira Ayuso 2020-01-21 631 continue;
826035498ec14b Pablo Neira Ayuso 2020-01-21 632 if (!nla_strcmp(nla, type->name))
826035498ec14b Pablo Neira Ayuso 2020-01-21 633 return type;
9370761c56b66a Pablo Neira Ayuso 2013-10-10 634 }
baae3e62f31618 Patrick McHardy 2014-01-09 635 return NULL;
9370761c56b66a Pablo Neira Ayuso 2013-10-10 636 }
9370761c56b66a Pablo Neira Ayuso 2013-10-10 637
eb014de4fd418d Pablo Neira Ayuso 2020-01-21 638 struct nft_module_request {
eb014de4fd418d Pablo Neira Ayuso 2020-01-21 639 struct list_head list;
eb014de4fd418d Pablo Neira Ayuso 2020-01-21 640 char module[MODULE_NAME_LEN];
eb014de4fd418d Pablo Neira Ayuso 2020-01-21 641 bool done;
eb014de4fd418d Pablo Neira Ayuso 2020-01-21 642 };
eb014de4fd418d Pablo Neira Ayuso 2020-01-21 643
452238e8d5ffd8 Florian Westphal 2018-07-11 644 #ifdef CONFIG_MODULES
cefa31a9d46112 Florian Westphal 2021-03-25 645 __printf(2, 3) int nft_request_module(struct net *net, const char *fmt,
35b7ee34abdb72 Andrew Lunn 2020-10-31 646 ...)
452238e8d5ffd8 Florian Westphal 2018-07-11 647 {
452238e8d5ffd8 Florian Westphal 2018-07-11 648 char module_name[MODULE_NAME_LEN];
0854db2aaef3fc Florian Westphal 2021-04-01 649 struct nftables_pernet *nft_net;
eb014de4fd418d Pablo Neira Ayuso 2020-01-21 650 struct nft_module_request *req;
452238e8d5ffd8 Florian Westphal 2018-07-11 651 va_list args;
452238e8d5ffd8 Florian Westphal 2018-07-11 652 int ret;
452238e8d5ffd8 Florian Westphal 2018-07-11 653
452238e8d5ffd8 Florian Westphal 2018-07-11 654 va_start(args, fmt);
452238e8d5ffd8 Florian Westphal 2018-07-11 655 ret = vsnprintf(module_name, MODULE_NAME_LEN, fmt, args);
452238e8d5ffd8 Florian Westphal 2018-07-11 656 va_end(args);
9332d27d791818 Florian Westphal 2020-01-16 657 if (ret >= MODULE_NAME_LEN)
eb014de4fd418d Pablo Neira Ayuso 2020-01-21 658 return 0;
452238e8d5ffd8 Florian Westphal 2018-07-11 659
d59d2f82f984df Pablo Neira Ayuso 2021-04-23 660 nft_net = nft_pernet(net);
0854db2aaef3fc Florian Westphal 2021-04-01 661 list_for_each_entry(req, &nft_net->module_list, list) {
eb014de4fd418d Pablo Neira Ayuso 2020-01-21 662 if (!strcmp(req->module, module_name)) {
eb014de4fd418d Pablo Neira Ayuso 2020-01-21 663 if (req->done)
eb014de4fd418d Pablo Neira Ayuso 2020-01-21 664 return 0;
ec7470b834fe7b Pablo Neira Ayuso 2020-01-13 665
eb014de4fd418d Pablo Neira Ayuso 2020-01-21 666 /* A request to load this module already exists. */
eb014de4fd418d Pablo Neira Ayuso 2020-01-21 667 return -EAGAIN;
eb014de4fd418d Pablo Neira Ayuso 2020-01-21 668 }
eb014de4fd418d Pablo Neira Ayuso 2020-01-21 669 }
eb014de4fd418d Pablo Neira Ayuso 2020-01-21 670
eb014de4fd418d Pablo Neira Ayuso 2020-01-21 671 req = kmalloc(sizeof(*req), GFP_KERNEL);
eb014de4fd418d Pablo Neira Ayuso 2020-01-21 672 if (!req)
eb014de4fd418d Pablo Neira Ayuso 2020-01-21 673 return -ENOMEM;
eb014de4fd418d Pablo Neira Ayuso 2020-01-21 674
eb014de4fd418d Pablo Neira Ayuso 2020-01-21 675 req->done = false;
eb014de4fd418d Pablo Neira Ayuso 2020-01-21 676 strlcpy(req->module, module_name, MODULE_NAME_LEN);
0854db2aaef3fc Florian Westphal 2021-04-01 677 list_add_tail(&req->list, &nft_net->module_list);
eb014de4fd418d Pablo Neira Ayuso 2020-01-21 678
eb014de4fd418d Pablo Neira Ayuso 2020-01-21 679 return -EAGAIN;
452238e8d5ffd8 Florian Westphal 2018-07-11 680 }
cefa31a9d46112 Florian Westphal 2021-03-25 @681 EXPORT_SYMBOL_GPL(nft_request_module);
452238e8d5ffd8 Florian Westphal 2018-07-11 682 #endif
452238e8d5ffd8 Florian Westphal 2018-07-11 683
f102d66b335a41 Florian Westphal 2018-07-11 @684 static void lockdep_nfnl_nft_mutex_not_held(void)
f102d66b335a41 Florian Westphal 2018-07-11 685 {
f102d66b335a41 Florian Westphal 2018-07-11 686 #ifdef CONFIG_PROVE_LOCKING
c0700dfa2cae44 Florian Westphal 2020-11-19 687 if (debug_locks)
f102d66b335a41 Florian Westphal 2018-07-11 688 WARN_ON_ONCE(lockdep_nfnl_is_held(NFNL_SUBSYS_NFTABLES));
f102d66b335a41 Florian Westphal 2018-07-11 689 #endif
f102d66b335a41 Florian Westphal 2018-07-11 690 }
f102d66b335a41 Florian Westphal 2018-07-11 691
32537e91847a56 Pablo Neira Ayuso 2018-03-27 692 static const struct nft_chain_type *
452238e8d5ffd8 Florian Westphal 2018-07-11 @693 nf_tables_chain_type_lookup(struct net *net, const struct nlattr *nla,
452238e8d5ffd8 Florian Westphal 2018-07-11 694 u8 family, bool autoload)
9370761c56b66a Pablo Neira Ayuso 2013-10-10 695 {
32537e91847a56 Pablo Neira Ayuso 2018-03-27 696 const struct nft_chain_type *type;
9370761c56b66a Pablo Neira Ayuso 2013-10-10 697
1ea26cca52e46c Pablo Neira Ayuso 2017-12-19 698 type = __nf_tables_chain_type_lookup(nla, family);
93b0806f006b8b Patrick McHardy 2014-01-09 699 if (type != NULL)
93b0806f006b8b Patrick McHardy 2014-01-09 700 return type;
f102d66b335a41 Florian Westphal 2018-07-11 701
f102d66b335a41 Florian Westphal 2018-07-11 702 lockdep_nfnl_nft_mutex_not_held();
9370761c56b66a Pablo Neira Ayuso 2013-10-10 703 #ifdef CONFIG_MODULES
93b0806f006b8b Patrick McHardy 2014-01-09 704 if (autoload) {
eb014de4fd418d Pablo Neira Ayuso 2020-01-21 705 if (nft_request_module(net, "nft-chain-%u-%.*s", family,
eb014de4fd418d Pablo Neira Ayuso 2020-01-21 706 nla_len(nla),
eb014de4fd418d Pablo Neira Ayuso 2020-01-21 707 (const char *)nla_data(nla)) == -EAGAIN)
93b0806f006b8b Patrick McHardy 2014-01-09 708 return ERR_PTR(-EAGAIN);
9370761c56b66a Pablo Neira Ayuso 2013-10-10 709 }
9370761c56b66a Pablo Neira Ayuso 2013-10-10 710 #endif
93b0806f006b8b Patrick McHardy 2014-01-09 711 return ERR_PTR(-ENOENT);
9370761c56b66a Pablo Neira Ayuso 2013-10-10 712 }
9370761c56b66a Pablo Neira Ayuso 2013-10-10 713
802b805162a1b7 Pablo Neira Ayuso 2021-03-31 @714 static __be16 nft_base_seq(const struct net *net)
802b805162a1b7 Pablo Neira Ayuso 2021-03-31 715 {
d59d2f82f984df Pablo Neira Ayuso 2021-04-23 716 struct nftables_pernet *nft_net = nft_pernet(net);
0854db2aaef3fc Florian Westphal 2021-04-01 717
0854db2aaef3fc Florian Westphal 2021-04-01 718 return htons(nft_net->base_seq & 0xffff);
802b805162a1b7 Pablo Neira Ayuso 2021-03-31 719 }
802b805162a1b7 Pablo Neira Ayuso 2021-03-31 720
96518518cc417b Patrick McHardy 2013-10-14 721 static const struct nla_policy nft_table_policy[NFTA_TABLE_MAX + 1] = {
1cae565e8b746f Pablo Neira Ayuso 2015-03-05 722 [NFTA_TABLE_NAME] = { .type = NLA_STRING,
1cae565e8b746f Pablo Neira Ayuso 2015-03-05 723 .len = NFT_TABLE_MAXNAMELEN - 1 },
9ddf63235749a9 Pablo Neira Ayuso 2013-10-10 724 [NFTA_TABLE_FLAGS] = { .type = NLA_U32 },
3ecbfd65f50e5f Harsha Sharma 2017-12-27 725 [NFTA_TABLE_HANDLE] = { .type = NLA_U64 },
7a81575b806e5d Jose M. Guisado Gomez 2020-08-20 726 [NFTA_TABLE_USERDATA] = { .type = NLA_BINARY,
7a81575b806e5d Jose M. Guisado Gomez 2020-08-20 727 .len = NFT_USERDATA_MAXLEN }
96518518cc417b Patrick McHardy 2013-10-14 728 };
96518518cc417b Patrick McHardy 2013-10-14 729
84d7fce6938848 Pablo Neira Ayuso 2014-09-04 @730 static int nf_tables_fill_table_info(struct sk_buff *skb, struct net *net,
84d7fce6938848 Pablo Neira Ayuso 2014-09-04 731 u32 portid, u32 seq, int event, u32 flags,
84d7fce6938848 Pablo Neira Ayuso 2014-09-04 732 int family, const struct nft_table *table)
96518518cc417b Patrick McHardy 2013-10-14 733 {
96518518cc417b Patrick McHardy 2013-10-14 734 struct nlmsghdr *nlh;
96518518cc417b Patrick McHardy 2013-10-14 735
dedb67c4b4e5fa Pablo Neira Ayuso 2017-03-28 736 event = nfnl_msg_type(NFNL_SUBSYS_NFTABLES, event);
19c28b1374fb10 Pablo Neira Ayuso 2021-03-30 737 nlh = nfnl_msg_put(skb, portid, seq, event, flags, family,
19c28b1374fb10 Pablo Neira Ayuso 2021-03-30 738 NFNETLINK_V0, nft_base_seq(net));
19c28b1374fb10 Pablo Neira Ayuso 2021-03-30 739 if (!nlh)
96518518cc417b Patrick McHardy 2013-10-14 740 goto nla_put_failure;
96518518cc417b Patrick McHardy 2013-10-14 741
9ddf63235749a9 Pablo Neira Ayuso 2013-10-10 742 if (nla_put_string(skb, NFTA_TABLE_NAME, table->name) ||
179d9ba5559a75 Pablo Neira Ayuso 2021-05-24 743 nla_put_be32(skb, NFTA_TABLE_FLAGS,
179d9ba5559a75 Pablo Neira Ayuso 2021-05-24 744 htonl(table->flags & NFT_TABLE_F_MASK)) ||
3ecbfd65f50e5f Harsha Sharma 2017-12-27 745 nla_put_be32(skb, NFTA_TABLE_USE, htonl(table->use)) ||
3ecbfd65f50e5f Harsha Sharma 2017-12-27 746 nla_put_be64(skb, NFTA_TABLE_HANDLE, cpu_to_be64(table->handle),
3ecbfd65f50e5f Harsha Sharma 2017-12-27 747 NFTA_TABLE_PAD))
96518518cc417b Patrick McHardy 2013-10-14 748 goto nla_put_failure;
6001a930ce0378 Pablo Neira Ayuso 2021-02-15 749 if (nft_table_has_owner(table) &&
6001a930ce0378 Pablo Neira Ayuso 2021-02-15 750 nla_put_be32(skb, NFTA_TABLE_OWNER, htonl(table->nlpid)))
6001a930ce0378 Pablo Neira Ayuso 2021-02-15 751 goto nla_put_failure;
96518518cc417b Patrick McHardy 2013-10-14 752
7a81575b806e5d Jose M. Guisado Gomez 2020-08-20 753 if (table->udata) {
7a81575b806e5d Jose M. Guisado Gomez 2020-08-20 754 if (nla_put(skb, NFTA_TABLE_USERDATA, table->udlen, table->udata))
7a81575b806e5d Jose M. Guisado Gomez 2020-08-20 755 goto nla_put_failure;
7a81575b806e5d Jose M. Guisado Gomez 2020-08-20 756 }
7a81575b806e5d Jose M. Guisado Gomez 2020-08-20 757
053c095a82cf77 Johannes Berg 2015-01-16 758 nlmsg_end(skb, nlh);
053c095a82cf77 Johannes Berg 2015-01-16 759 return 0;
96518518cc417b Patrick McHardy 2013-10-14 760
96518518cc417b Patrick McHardy 2013-10-14 761 nla_put_failure:
96518518cc417b Patrick McHardy 2013-10-14 762 nlmsg_trim(skb, nlh);
96518518cc417b Patrick McHardy 2013-10-14 763 return -1;
96518518cc417b Patrick McHardy 2013-10-14 764 }
96518518cc417b Patrick McHardy 2013-10-14 765
67cc570edaa020 Pablo Neira Ayuso 2020-08-27 766 struct nftnl_skb_parms {
67cc570edaa020 Pablo Neira Ayuso 2020-08-27 767 bool report;
67cc570edaa020 Pablo Neira Ayuso 2020-08-27 768 };
67cc570edaa020 Pablo Neira Ayuso 2020-08-27 769 #define NFT_CB(skb) (*(struct nftnl_skb_parms*)&((skb)->cb))
67cc570edaa020 Pablo Neira Ayuso 2020-08-27 770
67cc570edaa020 Pablo Neira Ayuso 2020-08-27 @771 static void nft_notify_enqueue(struct sk_buff *skb, bool report,
67cc570edaa020 Pablo Neira Ayuso 2020-08-27 772 struct list_head *notify_list)
67cc570edaa020 Pablo Neira Ayuso 2020-08-27 773 {
67cc570edaa020 Pablo Neira Ayuso 2020-08-27 774 NFT_CB(skb).report = report;
67cc570edaa020 Pablo Neira Ayuso 2020-08-27 775 list_add_tail(&skb->list, notify_list);
67cc570edaa020 Pablo Neira Ayuso 2020-08-27 776 }
67cc570edaa020 Pablo Neira Ayuso 2020-08-27 777
25e94a997b324b Pablo Neira Ayuso 2017-03-01 @778 static void nf_tables_table_notify(const struct nft_ctx *ctx, int event)
96518518cc417b Patrick McHardy 2013-10-14 779 {
0854db2aaef3fc Florian Westphal 2021-04-01 780 struct nftables_pernet *nft_net;
96518518cc417b Patrick McHardy 2013-10-14 781 struct sk_buff *skb;
96518518cc417b Patrick McHardy 2013-10-14 782 int err;
96518518cc417b Patrick McHardy 2013-10-14 783
128ad3322ba5de Pablo Neira Ayuso 2014-05-09 784 if (!ctx->report &&
128ad3322ba5de Pablo Neira Ayuso 2014-05-09 785 !nfnetlink_has_listeners(ctx->net, NFNLGRP_NFTABLES))
25e94a997b324b Pablo Neira Ayuso 2017-03-01 786 return;
96518518cc417b Patrick McHardy 2013-10-14 787
96518518cc417b Patrick McHardy 2013-10-14 788 skb = nlmsg_new(NLMSG_GOODSIZE, GFP_KERNEL);
96518518cc417b Patrick McHardy 2013-10-14 789 if (skb == NULL)
96518518cc417b Patrick McHardy 2013-10-14 790 goto err;
96518518cc417b Patrick McHardy 2013-10-14 791
84d7fce6938848 Pablo Neira Ayuso 2014-09-04 792 err = nf_tables_fill_table_info(skb, ctx->net, ctx->portid, ctx->seq,
36596dadf54a92 Pablo Neira Ayuso 2018-01-09 793 event, 0, ctx->family, ctx->table);
96518518cc417b Patrick McHardy 2013-10-14 794 if (err < 0) {
96518518cc417b Patrick McHardy 2013-10-14 795 kfree_skb(skb);
96518518cc417b Patrick McHardy 2013-10-14 796 goto err;
96518518cc417b Patrick McHardy 2013-10-14 797 }
96518518cc417b Patrick McHardy 2013-10-14 798
d59d2f82f984df Pablo Neira Ayuso 2021-04-23 799 nft_net = nft_pernet(ctx->net);
0854db2aaef3fc Florian Westphal 2021-04-01 800 nft_notify_enqueue(skb, ctx->report, &nft_net->notify_list);
25e94a997b324b Pablo Neira Ayuso 2017-03-01 801 return;
96518518cc417b Patrick McHardy 2013-10-14 802 err:
25e94a997b324b Pablo Neira Ayuso 2017-03-01 803 nfnetlink_set_err(ctx->net, ctx->portid, NFNLGRP_NFTABLES, -ENOBUFS);
96518518cc417b Patrick McHardy 2013-10-14 804 }
96518518cc417b Patrick McHardy 2013-10-14 805
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 47812 bytes --]
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH nf 2/2] netfilter: nf_tables: do not allow to delete table with owner by handle
2021-06-22 10:13 ` [PATCH nf 2/2] netfilter: nf_tables: do not allow to delete table with owner by handle Pablo Neira Ayuso
2021-06-22 13:37 ` kernel test robot
@ 2021-06-22 14:35 ` kernel test robot
1 sibling, 0 replies; 4+ messages in thread
From: kernel test robot @ 2021-06-22 14:35 UTC (permalink / raw)
To: Pablo Neira Ayuso, netfilter-devel; +Cc: kbuild-all
[-- Attachment #1: Type: text/plain, Size: 104327 bytes --]
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 <lkp@intel.com>
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 <linux/compiler.h>
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
[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 68180 bytes --]
^ permalink raw reply [flat|nested] 4+ messages in thread