Re: [PATCH nf 2/2] netfilter: nf_tables: do not allow to delete table with owner by handle

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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@xxxxxxxxx>

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@xxxxxxxxxxxx

Attachment: .config.gz
Description: application/gzip


[Index of Archives]     [Netfitler Users]     [Berkeley Packet Filter]     [LARTC]     [Bugtraq]     [Yosemite Forum]

  Powered by Linux