tree:
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: dcde237b9b0eb1d19306e6f48c0a4e058907619f
commit: 670d0a4b10704667765f7d18f7592993d02783aa sparse: use identifiers to define address
spaces
date: 3 weeks ago
config: arm64-randconfig-s032-20200708 (attached as .config)
compiler: aarch64-linux-gcc (GCC) 9.3.0
reproduce:
wget
https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O
~/bin/make.cross
chmod +x ~/bin/make.cross
# apt-get install sparse
# sparse version: v0.6.2-37-gc9676a3b-dirty
git checkout 670d0a4b10704667765f7d18f7592993d02783aa
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross C=1
CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' ARCH=arm64
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp(a)intel.com>
sparse warnings: (new ones prefixed by >>)
net/netfilter/nf_tables_api.c:1405:25: sparse: sparse: cast between address spaces
(__percpu -> __rcu)
net/netfilter/nf_tables_api.c:1405:25: sparse: sparse: incompatible types in comparison
expression (different address spaces):
net/netfilter/nf_tables_api.c:1405:25: sparse: struct nft_stats [noderef] __rcu *
net/netfilter/nf_tables_api.c:1405:25: sparse: struct nft_stats [noderef] __percpu
*
net/netfilter/nf_tables_api.c:1567:31: sparse: sparse: incorrect type in return
expression (different address spaces) @@ expected struct nft_stats [noderef] __percpu
* @@ got void * @@
net/netfilter/nf_tables_api.c:1570:31: sparse: sparse: incorrect type in return
expression (different address spaces) @@ expected struct nft_stats [noderef] __percpu
* @@ got void * @@
net/netfilter/nf_tables_api.c:1574:31: sparse: sparse: incorrect type in return
expression (different address spaces) @@ expected struct nft_stats [noderef] __percpu
* @@ got void * @@
net/netfilter/nf_tables_api.c:1596:17: sparse: sparse: cast between address spaces
(__percpu -> __rcu)
net/netfilter/nf_tables_api.c:1596:17: sparse: sparse: incompatible types in comparison
expression (different address spaces):
net/netfilter/nf_tables_api.c:1596:17: sparse: struct nft_stats [noderef] __rcu *
net/netfilter/nf_tables_api.c:1596:17: sparse: struct nft_stats [noderef] __percpu
*
net/netfilter/nf_tables_api.c:1596:17: sparse: sparse: incompatible types in comparison
expression (different address spaces):
net/netfilter/nf_tables_api.c:1596:17: sparse: struct nft_stats [noderef] __rcu *
net/netfilter/nf_tables_api.c:1596:17: sparse: struct nft_stats [noderef] __percpu
*
net/netfilter/nf_tables_api.c:1639:21: sparse: sparse: cast between address spaces
(__percpu -> __rcu)
net/netfilter/nf_tables_api.c:1639:21: sparse: sparse: incompatible types in comparison
expression (different address spaces):
net/netfilter/nf_tables_api.c:1639:21: sparse: struct nft_stats [noderef] __rcu *
net/netfilter/nf_tables_api.c:1639:21: sparse: struct nft_stats [noderef] __percpu
*
net/netfilter/nf_tables_api.c:1947:25: sparse: sparse: cast between address spaces
(__percpu -> __rcu)
net/netfilter/nf_tables_api.c:1947:25: sparse: sparse: incompatible types in comparison
expression (different address spaces):
net/netfilter/nf_tables_api.c:1947:25: sparse: struct nft_stats [noderef] __rcu *
net/netfilter/nf_tables_api.c:1947:25: sparse: struct nft_stats [noderef] __percpu
*
net/netfilter/nf_tables_api.c:2097:23: sparse: sparse: incorrect type in assignment
(different address spaces) @@ expected struct nft_stats *stats @@ got struct
nft_stats [noderef] __percpu * @@
net/netfilter/nf_tables_api.c:2097:23: sparse: expected struct nft_stats *stats
> net/netfilter/nf_tables_api.c:2097:23: sparse: got struct
nft_stats [noderef] __percpu *
net/netfilter/nf_tables_api.c:2108:38: sparse:
sparse: incorrect type in assignment (different address spaces) @@ expected struct
nft_stats [noderef] __percpu *stats @@ got struct nft_stats *stats @@
> net/netfilter/nf_tables_api.c:2108:38: sparse: expected
struct nft_stats [noderef] __percpu *stats
net/netfilter/nf_tables_api.c:2108:38:
sparse: got struct nft_stats *stats
net/netfilter/nf_tables_api.c:2144:21: sparse: sparse: incorrect type in argument 1
(different address spaces) @@ expected void [noderef] __percpu *__pdata @@ got
struct nft_stats *stats @@
> net/netfilter/nf_tables_api.c:2144:21: sparse: expected void
[noderef] __percpu *__pdata
net/netfilter/nf_tables_api.c:2144:21: sparse:
got struct nft_stats *stats
include/linux/rcupdate.h:686:9: sparse: sparse: context imbalance in
'nft_netlink_dump_start_rcu' - unexpected unlock
--
> drivers/rpmsg/qcom_glink_smem.c:93:17: sparse: sparse: incorrect
type in argument 2 (different address spaces) @@ expected void const volatile
[noderef] __iomem * @@ got void * @@
> drivers/rpmsg/qcom_glink_smem.c:93:17: sparse: expected void const volatile
[noderef] __iomem *
drivers/rpmsg/qcom_glink_smem.c:93:17: sparse: got void
*
> drivers/rpmsg/qcom_glink_smem.c:96:17: sparse: sparse: incorrect
type in argument 2 (different address spaces) @@ expected void const volatile
[noderef] __iomem * @@ got void *fifo @@
drivers/rpmsg/qcom_glink_smem.c:96:17: sparse: expected void const volatile [noderef]
__iomem *
drivers/rpmsg/qcom_glink_smem.c:96:17: sparse: got void *fifo
vim +2097 net/netfilter/nf_tables_api.c
d54725cd11a57c Pablo Neira Ayuso 2019-10-16 2034
c9626a2cbdb20e Pablo Neira Ayuso 2019-07-09 2035 static int nf_tables_updchain(struct
nft_ctx *ctx, u8 genmask, u8 policy,
c9626a2cbdb20e Pablo Neira Ayuso 2019-07-09 2036 u32 flags)
2c4a488a482d26 Pablo Neira Ayuso 2017-09-03 2037 {
2c4a488a482d26 Pablo Neira Ayuso 2017-09-03 2038 const struct nlattr * const *nla =
ctx->nla;
2c4a488a482d26 Pablo Neira Ayuso 2017-09-03 2039 struct nft_table *table =
ctx->table;
2c4a488a482d26 Pablo Neira Ayuso 2017-09-03 2040 struct nft_chain *chain =
ctx->chain;
2c4a488a482d26 Pablo Neira Ayuso 2017-09-03 2041 struct nft_base_chain *basechain;
2c4a488a482d26 Pablo Neira Ayuso 2017-09-03 2042 struct nft_stats *stats = NULL;
2c4a488a482d26 Pablo Neira Ayuso 2017-09-03 2043 struct nft_chain_hook hook;
2c4a488a482d26 Pablo Neira Ayuso 2017-09-03 2044 struct nf_hook_ops *ops;
2c4a488a482d26 Pablo Neira Ayuso 2017-09-03 2045 struct nft_trans *trans;
c974a3a36468d1 Pablo Neira Ayuso 2017-12-09 2046 int err;
2c4a488a482d26 Pablo Neira Ayuso 2017-09-03 2047
c9626a2cbdb20e Pablo Neira Ayuso 2019-07-09 2048 if (chain->flags ^ flags)
c9626a2cbdb20e Pablo Neira Ayuso 2019-07-09 2049 return -EOPNOTSUPP;
c9626a2cbdb20e Pablo Neira Ayuso 2019-07-09 2050
2c4a488a482d26 Pablo Neira Ayuso 2017-09-03 2051 if (nla[NFTA_CHAIN_HOOK]) {
2c4a488a482d26 Pablo Neira Ayuso 2017-09-03 2052 if (!nft_is_base_chain(chain))
2c4a488a482d26 Pablo Neira Ayuso 2017-09-03 2053 return -EBUSY;
2c4a488a482d26 Pablo Neira Ayuso 2017-09-03 2054
36596dadf54a92 Pablo Neira Ayuso 2018-01-09 2055 err =
nft_chain_parse_hook(ctx->net, nla, &hook, ctx->family,
445509eb9b0027 Pablo Neira Ayuso 2018-08-03 2056 false);
2c4a488a482d26 Pablo Neira Ayuso 2017-09-03 2057 if (err < 0)
2c4a488a482d26 Pablo Neira Ayuso 2017-09-03 2058 return err;
2c4a488a482d26 Pablo Neira Ayuso 2017-09-03 2059
2c4a488a482d26 Pablo Neira Ayuso 2017-09-03 2060 basechain = nft_base_chain(chain);
2c4a488a482d26 Pablo Neira Ayuso 2017-09-03 2061 if (basechain->type != hook.type)
{
2c4a488a482d26 Pablo Neira Ayuso 2017-09-03 2062 nft_chain_release_hook(&hook);
2c4a488a482d26 Pablo Neira Ayuso 2017-09-03 2063 return -EBUSY;
2c4a488a482d26 Pablo Neira Ayuso 2017-09-03 2064 }
2c4a488a482d26 Pablo Neira Ayuso 2017-09-03 2065
d54725cd11a57c Pablo Neira Ayuso 2019-10-16 2066 if (ctx->family == NFPROTO_NETDEV)
{
d54725cd11a57c Pablo Neira Ayuso 2019-10-16 2067 if
(!nft_hook_list_equal(&basechain->hook_list,
d54725cd11a57c Pablo Neira Ayuso 2019-10-16 2068 &hook.list)) {
d54725cd11a57c Pablo Neira Ayuso 2019-10-16 2069 nft_chain_release_hook(&hook);
d54725cd11a57c Pablo Neira Ayuso 2019-10-16 2070 return -EBUSY;
d54725cd11a57c Pablo Neira Ayuso 2019-10-16 2071 }
d54725cd11a57c Pablo Neira Ayuso 2019-10-16 2072 } else {
c974a3a36468d1 Pablo Neira Ayuso 2017-12-09 2073 ops = &basechain->ops;
2c4a488a482d26 Pablo Neira Ayuso 2017-09-03 2074 if (ops->hooknum != hook.num ||
d54725cd11a57c Pablo Neira Ayuso 2019-10-16 2075 ops->priority !=
hook.priority) {
2c4a488a482d26 Pablo Neira Ayuso 2017-09-03 2076 nft_chain_release_hook(&hook);
2c4a488a482d26 Pablo Neira Ayuso 2017-09-03 2077 return -EBUSY;
2c4a488a482d26 Pablo Neira Ayuso 2017-09-03 2078 }
d54725cd11a57c Pablo Neira Ayuso 2019-10-16 2079 }
2c4a488a482d26 Pablo Neira Ayuso 2017-09-03 2080 nft_chain_release_hook(&hook);
2c4a488a482d26 Pablo Neira Ayuso 2017-09-03 2081 }
2c4a488a482d26 Pablo Neira Ayuso 2017-09-03 2082
2c4a488a482d26 Pablo Neira Ayuso 2017-09-03 2083 if (nla[NFTA_CHAIN_HANDLE] &&
2c4a488a482d26 Pablo Neira Ayuso 2017-09-03 2084 nla[NFTA_CHAIN_NAME]) {
2c4a488a482d26 Pablo Neira Ayuso 2017-09-03 2085 struct nft_chain *chain2;
2c4a488a482d26 Pablo Neira Ayuso 2017-09-03 2086
f102d66b335a41 Florian Westphal 2018-07-11 2087 chain2 =
nft_chain_lookup(ctx->net, table,
f102d66b335a41 Florian Westphal 2018-07-11 2088 nla[NFTA_CHAIN_NAME], genmask);
0d18779be13766 JingPiao Chen 2017-09-23 2089 if (!IS_ERR(chain2))
0d18779be13766 JingPiao Chen 2017-09-23 2090 return -EEXIST;
2c4a488a482d26 Pablo Neira Ayuso 2017-09-03 2091 }
2c4a488a482d26 Pablo Neira Ayuso 2017-09-03 2092
2c4a488a482d26 Pablo Neira Ayuso 2017-09-03 2093 if (nla[NFTA_CHAIN_COUNTERS]) {
2c4a488a482d26 Pablo Neira Ayuso 2017-09-03 2094 if (!nft_is_base_chain(chain))
2c4a488a482d26 Pablo Neira Ayuso 2017-09-03 2095 return -EOPNOTSUPP;
2c4a488a482d26 Pablo Neira Ayuso 2017-09-03 2096
2c4a488a482d26 Pablo Neira Ayuso 2017-09-03 @2097 stats =
nft_stats_alloc(nla[NFTA_CHAIN_COUNTERS]);
2c4a488a482d26 Pablo Neira Ayuso 2017-09-03 2098 if (IS_ERR(stats))
2c4a488a482d26 Pablo Neira Ayuso 2017-09-03 2099 return PTR_ERR(stats);
2c4a488a482d26 Pablo Neira Ayuso 2017-09-03 2100 }
2c4a488a482d26 Pablo Neira Ayuso 2017-09-03 2101
c6cc94df65c317 Florian Westphal 2018-07-17 2102 err = -ENOMEM;
2c4a488a482d26 Pablo Neira Ayuso 2017-09-03 2103 trans = nft_trans_alloc(ctx,
NFT_MSG_NEWCHAIN,
2c4a488a482d26 Pablo Neira Ayuso 2017-09-03 2104 sizeof(struct nft_trans_chain));
c6cc94df65c317 Florian Westphal 2018-07-17 2105 if (trans == NULL)
c6cc94df65c317 Florian Westphal 2018-07-17 2106 goto err;
2c4a488a482d26 Pablo Neira Ayuso 2017-09-03 2107
2c4a488a482d26 Pablo Neira Ayuso 2017-09-03 @2108 nft_trans_chain_stats(trans) = stats;
2c4a488a482d26 Pablo Neira Ayuso 2017-09-03 2109 nft_trans_chain_update(trans) = true;
2c4a488a482d26 Pablo Neira Ayuso 2017-09-03 2110
2c4a488a482d26 Pablo Neira Ayuso 2017-09-03 2111 if (nla[NFTA_CHAIN_POLICY])
2c4a488a482d26 Pablo Neira Ayuso 2017-09-03 2112 nft_trans_chain_policy(trans) =
policy;
2c4a488a482d26 Pablo Neira Ayuso 2017-09-03 2113 else
2c4a488a482d26 Pablo Neira Ayuso 2017-09-03 2114 nft_trans_chain_policy(trans) = -1;
2c4a488a482d26 Pablo Neira Ayuso 2017-09-03 2115
c6cc94df65c317 Florian Westphal 2018-07-17 2116 if (nla[NFTA_CHAIN_HANDLE] &&
c6cc94df65c317 Florian Westphal 2018-07-17 2117 nla[NFTA_CHAIN_NAME]) {
c6cc94df65c317 Florian Westphal 2018-07-17 2118 struct nft_trans *tmp;
c6cc94df65c317 Florian Westphal 2018-07-17 2119 char *name;
c6cc94df65c317 Florian Westphal 2018-07-17 2120
c6cc94df65c317 Florian Westphal 2018-07-17 2121 err = -ENOMEM;
c6cc94df65c317 Florian Westphal 2018-07-17 2122 name =
nla_strdup(nla[NFTA_CHAIN_NAME], GFP_KERNEL);
c6cc94df65c317 Florian Westphal 2018-07-17 2123 if (!name)
c6cc94df65c317 Florian Westphal 2018-07-17 2124 goto err;
c6cc94df65c317 Florian Westphal 2018-07-17 2125
c6cc94df65c317 Florian Westphal 2018-07-17 2126 err = -EEXIST;
c6cc94df65c317 Florian Westphal 2018-07-17 2127 list_for_each_entry(tmp,
&ctx->net->nft.commit_list, list) {
c6cc94df65c317 Florian Westphal 2018-07-17 2128 if (tmp->msg_type ==
NFT_MSG_NEWCHAIN &&
c6cc94df65c317 Florian Westphal 2018-07-17 2129 tmp->ctx.table == table
&&
c6cc94df65c317 Florian Westphal 2018-07-17 2130 nft_trans_chain_update(tmp)
&&
c6cc94df65c317 Florian Westphal 2018-07-17 2131 nft_trans_chain_name(tmp)
&&
c6cc94df65c317 Florian Westphal 2018-07-17 2132 strcmp(name,
nft_trans_chain_name(tmp)) == 0) {
c6cc94df65c317 Florian Westphal 2018-07-17 2133 kfree(name);
c6cc94df65c317 Florian Westphal 2018-07-17 2134 goto err;
2c4a488a482d26 Pablo Neira Ayuso 2017-09-03 2135 }
2c4a488a482d26 Pablo Neira Ayuso 2017-09-03 2136 }
c6cc94df65c317 Florian Westphal 2018-07-17 2137
c6cc94df65c317 Florian Westphal 2018-07-17 2138 nft_trans_chain_name(trans) = name;
2c4a488a482d26 Pablo Neira Ayuso 2017-09-03 2139 }
2c4a488a482d26 Pablo Neira Ayuso 2017-09-03 2140 list_add_tail(&trans->list,
&ctx->net->nft.commit_list);
2c4a488a482d26 Pablo Neira Ayuso 2017-09-03 2141
2c4a488a482d26 Pablo Neira Ayuso 2017-09-03 2142 return 0;
c6cc94df65c317 Florian Westphal 2018-07-17 2143 err:
c6cc94df65c317 Florian Westphal 2018-07-17 @2144 free_percpu(stats);
c6cc94df65c317 Florian Westphal 2018-07-17 2145 kfree(trans);
c6cc94df65c317 Florian Westphal 2018-07-17 2146 return err;
2c4a488a482d26 Pablo Neira Ayuso 2017-09-03 2147 }
2c4a488a482d26 Pablo Neira Ayuso 2017-09-03 2148
:::::: The code at line 2097 was first introduced by commit
:::::: 2c4a488a482d265df4505671f6051067524c4f76 netfilter: nf_tables: add
nf_tables_updchain()
:::::: TO: Pablo Neira Ayuso <pablo(a)netfilter.org>
:::::: CC: Pablo Neira Ayuso <pablo(a)netfilter.org>
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org