* [PATCH nf 1/2] netfilter: nf_tables: skip netlink portID validation if zero
@ 2021-06-22 10:13 Pablo Neira Ayuso
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
0 siblings, 1 reply; 6+ messages in thread
From: Pablo Neira Ayuso @ 2021-06-22 10:13 UTC (permalink / raw)
To: netfilter-devel
nft_table_lookup() allows us to obtain the table object by the name and
the family. The netlink portID validation needs to be skipped for the
dump path, since the ownership only applies to commands to update the
given table. Skip validation if the specified netlink PortID is zero
when calling nft_table_lookup().
Fixes: 6001a930ce03 ("netfilter: nftables: introduce table ownership")
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
---
net/netfilter/nf_tables_api.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/net/netfilter/nf_tables_api.c b/net/netfilter/nf_tables_api.c
index ca9ec8721e6c..1d62b1a83299 100644
--- a/net/netfilter/nf_tables_api.c
+++ b/net/netfilter/nf_tables_api.c
@@ -571,7 +571,7 @@ static struct nft_table *nft_table_lookup(const struct net *net,
table->family == family &&
nft_active_genmask(table, genmask)) {
if (nft_table_has_owner(table) &&
- table->nlpid != nlpid)
+ nlpid && table->nlpid != nlpid)
return ERR_PTR(-EPERM);
return table;
--
2.30.2
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH nf 2/2] netfilter: nf_tables: do not allow to delete table with owner by handle
2021-06-22 10:13 [PATCH nf 1/2] netfilter: nf_tables: skip netlink portID validation if zero Pablo Neira Ayuso
@ 2021-06-22 10:13 ` Pablo Neira Ayuso
2021-06-22 13:37 ` kernel test robot
2021-06-22 14:35 ` kernel test robot
0 siblings, 2 replies; 6+ messages in thread
From: Pablo Neira Ayuso @ 2021-06-22 10:13 UTC (permalink / raw)
To: netfilter-devel
nft_table_lookup_byhandle() also needs to validate the netlink PortID
owner when deleting a table by handle.
Fixes: 6001a930ce03 ("netfilter: nftables: introduce table ownership")
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
---
net/netfilter/nf_tables_api.c | 11 ++++++++---
1 file changed, 8 insertions(+), 3 deletions(-)
diff --git a/net/netfilter/nf_tables_api.c b/net/netfilter/nf_tables_api.c
index 1d62b1a83299..b482b16e0000 100644
--- a/net/netfilter/nf_tables_api.c
+++ b/net/netfilter/nf_tables_api.c
@@ -583,7 +583,7 @@ static struct nft_table *nft_table_lookup(const struct net *net,
static struct nft_table *nft_table_lookup_byhandle(const struct net *net,
const struct nlattr *nla,
- u8 genmask)
+ u8 genmask, u32 nlpid)
{
struct nftables_pernet *nft_net;
struct nft_table *table;
@@ -591,7 +591,11 @@ static struct nft_table *nft_table_lookup_byhandle(const struct net *net,
nft_net = nft_pernet(net);
list_for_each_entry(table, &nft_net->tables, list) {
if (be64_to_cpu(nla_get_be64(nla)) == table->handle &&
- nft_active_genmask(table, genmask))
+ nft_active_genmask(table, genmask)) {
+ if (nft_table_has_owner(table) &&
+ nlpid && table->nlpid != nlpid)
+ return ERR_PTR(-EPERM);
+
return table;
}
@@ -1279,7 +1283,8 @@ static int nf_tables_deltable(struct sk_buff *skb, const struct nfnl_info *info,
if (nla[NFTA_TABLE_HANDLE]) {
attr = nla[NFTA_TABLE_HANDLE];
- table = nft_table_lookup_byhandle(net, attr, genmask);
+ table = nft_table_lookup_byhandle(net, attr, genmask,
+ NETLINK_CB(skb).portid);
} else {
attr = nla[NFTA_TABLE_NAME];
table = nft_table_lookup(net, attr, family, genmask,
--
2.30.2
^ permalink raw reply related [flat|nested] 6+ 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; 6+ 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] 6+ messages in thread
* Re: [PATCH nf 2/2] netfilter: nf_tables: do not allow to delete table with owner by handle
@ 2021-06-22 13:37 ` kernel test robot
0 siblings, 0 replies; 6+ messages in thread
From: kernel test robot @ 2021-06-22 13:37 UTC (permalink / raw)
To: kbuild-all
[-- Attachment #1: Type: text/plain, Size: 31449 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(a)lists.01.org
[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 47812 bytes --]
^ permalink raw reply [flat|nested] 6+ 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 14:35 ` kernel test robot
2021-06-22 14:35 ` kernel test robot
1 sibling, 0 replies; 6+ 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] 6+ messages in thread
* Re: [PATCH nf 2/2] netfilter: nf_tables: do not allow to delete table with owner by handle
@ 2021-06-22 14:35 ` kernel test robot
0 siblings, 0 replies; 6+ messages in thread
From: kernel test robot @ 2021-06-22 14:35 UTC (permalink / raw)
To: kbuild-all
[-- Attachment #1: Type: text/plain, Size: 105858 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(a)lists.01.org
[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 68180 bytes --]
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2021-06-22 14:36 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-06-22 10:13 [PATCH nf 1/2] netfilter: nf_tables: skip netlink portID validation if zero Pablo Neira Ayuso
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 13:37 ` kernel test robot
2021-06-22 14:35 ` kernel test robot
2021-06-22 14:35 ` kernel test robot
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.