net/netfilter/xt_CT.c:99:22: sparse: sparse: incorrect type in assignment (different address spaces)

From: kernel test robot
Date: Sun Aug 09 2020 - 13:45:57 EST


tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: 06a81c1c7db9bd5de0bd38cd5acc44bb22b99150
commit: 670d0a4b10704667765f7d18f7592993d02783aa sparse: use identifiers to define address spaces
date: 7 weeks ago
config: i386-randconfig-s002-20200810 (attached as .config)
compiler: gcc-9 (Debian 9.3.0-15) 9.3.0
reproduce:
# apt-get install sparse
# sparse version: v0.6.2-118-ge1578773-dirty
git checkout 670d0a4b10704667765f7d18f7592993d02783aa
# save the attached .config to linux build tree
make W=1 C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' ARCH=i386

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@xxxxxxxxx>


sparse warnings: (new ones prefixed by >>)

>> net/netfilter/xt_CT.c:99:22: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected struct nf_conntrack_helper [noderef] __rcu *helper @@ got struct nf_conntrack_helper *[assigned] helper @@
>> net/netfilter/xt_CT.c:99:22: sparse: expected struct nf_conntrack_helper [noderef] __rcu *helper
net/netfilter/xt_CT.c:99:22: sparse: got struct nf_conntrack_helper *[assigned] helper
>> net/netfilter/xt_CT.c:213:45: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct nf_conntrack_helper *helper @@ got struct nf_conntrack_helper [noderef] __rcu *helper @@
net/netfilter/xt_CT.c:213:45: sparse: expected struct nf_conntrack_helper *helper
>> net/netfilter/xt_CT.c:213:45: sparse: got struct nf_conntrack_helper [noderef] __rcu *helper
net/netfilter/xt_CT.c:276:53: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct nf_conntrack_helper *helper @@ got struct nf_conntrack_helper [noderef] __rcu *helper @@
net/netfilter/xt_CT.c:276:53: sparse: expected struct nf_conntrack_helper *helper
net/netfilter/xt_CT.c:276:53: sparse: got struct nf_conntrack_helper [noderef] __rcu *helper

vim +99 net/netfilter/xt_CT.c

84f3bb9ae9db90 Patrick McHardy 2010-02-03 71
236df005614bea Pablo Neira Ayuso 2012-08-28 72 static int
236df005614bea Pablo Neira Ayuso 2012-08-28 73 xt_ct_set_helper(struct nf_conn *ct, const char *helper_name,
236df005614bea Pablo Neira Ayuso 2012-08-28 74 const struct xt_tgchk_param *par)
236df005614bea Pablo Neira Ayuso 2012-08-28 75 {
236df005614bea Pablo Neira Ayuso 2012-08-28 76 struct nf_conntrack_helper *helper;
236df005614bea Pablo Neira Ayuso 2012-08-28 77 struct nf_conn_help *help;
236df005614bea Pablo Neira Ayuso 2012-08-28 78 u8 proto;
236df005614bea Pablo Neira Ayuso 2012-08-28 79
236df005614bea Pablo Neira Ayuso 2012-08-28 80 proto = xt_ct_find_proto(par);
236df005614bea Pablo Neira Ayuso 2012-08-28 81 if (!proto) {
11f7aee2326f37 Florian Westphal 2018-02-09 82 pr_info_ratelimited("You must specify a L4 protocol and not use inversions on it\n");
236df005614bea Pablo Neira Ayuso 2012-08-28 83 return -ENOENT;
236df005614bea Pablo Neira Ayuso 2012-08-28 84 }
236df005614bea Pablo Neira Ayuso 2012-08-28 85
236df005614bea Pablo Neira Ayuso 2012-08-28 86 helper = nf_conntrack_helper_try_module_get(helper_name, par->family,
236df005614bea Pablo Neira Ayuso 2012-08-28 87 proto);
236df005614bea Pablo Neira Ayuso 2012-08-28 88 if (helper == NULL) {
11f7aee2326f37 Florian Westphal 2018-02-09 89 pr_info_ratelimited("No such helper \"%s\"\n", helper_name);
236df005614bea Pablo Neira Ayuso 2012-08-28 90 return -ENOENT;
236df005614bea Pablo Neira Ayuso 2012-08-28 91 }
236df005614bea Pablo Neira Ayuso 2012-08-28 92
440534d3c56be0 Gao Feng 2018-07-09 93 help = nf_ct_helper_ext_add(ct, GFP_KERNEL);
236df005614bea Pablo Neira Ayuso 2012-08-28 94 if (help == NULL) {
d91fc59cd77c71 Liping Zhang 2017-05-07 95 nf_conntrack_helper_put(helper);
236df005614bea Pablo Neira Ayuso 2012-08-28 96 return -ENOMEM;
236df005614bea Pablo Neira Ayuso 2012-08-28 97 }
236df005614bea Pablo Neira Ayuso 2012-08-28 98
236df005614bea Pablo Neira Ayuso 2012-08-28 @99 help->helper = helper;
236df005614bea Pablo Neira Ayuso 2012-08-28 100 return 0;
236df005614bea Pablo Neira Ayuso 2012-08-28 101 }
236df005614bea Pablo Neira Ayuso 2012-08-28 102
236df005614bea Pablo Neira Ayuso 2012-08-28 103 static int
236df005614bea Pablo Neira Ayuso 2012-08-28 104 xt_ct_set_timeout(struct nf_conn *ct, const struct xt_tgchk_param *par,
236df005614bea Pablo Neira Ayuso 2012-08-28 105 const char *timeout_name)
236df005614bea Pablo Neira Ayuso 2012-08-28 106 {
236df005614bea Pablo Neira Ayuso 2012-08-28 107 #ifdef CONFIG_NF_CONNTRACK_TIMEOUT
b3480fe059ac91 Florian Westphal 2017-08-12 108 const struct nf_conntrack_l4proto *l4proto;
0153d5a810ab33 Pablo Neira Ayuso 2012-10-11 109 u8 proto;
236df005614bea Pablo Neira Ayuso 2012-08-28 110
0153d5a810ab33 Pablo Neira Ayuso 2012-10-11 111 proto = xt_ct_find_proto(par);
0153d5a810ab33 Pablo Neira Ayuso 2012-10-11 112 if (!proto) {
717700d183d65b Yi-Hung Wei 2019-03-26 113 pr_info_ratelimited("You must specify a L4 protocol and not "
717700d183d65b Yi-Hung Wei 2019-03-26 114 "use inversions on it");
717700d183d65b Yi-Hung Wei 2019-03-26 115 return -EINVAL;
236df005614bea Pablo Neira Ayuso 2012-08-28 116 }
4a60dc748d121b Florian Westphal 2019-01-15 117 l4proto = nf_ct_l4proto_find(proto);
717700d183d65b Yi-Hung Wei 2019-03-26 118 return nf_ct_set_timeout(par->net, ct, par->family, l4proto->l4proto,
717700d183d65b Yi-Hung Wei 2019-03-26 119 timeout_name);
403d89ad9cc076 Pablo Neira Ayuso 2015-10-05 120
236df005614bea Pablo Neira Ayuso 2012-08-28 121 #else
236df005614bea Pablo Neira Ayuso 2012-08-28 122 return -EOPNOTSUPP;
236df005614bea Pablo Neira Ayuso 2012-08-28 123 #endif
236df005614bea Pablo Neira Ayuso 2012-08-28 124 }
236df005614bea Pablo Neira Ayuso 2012-08-28 125
deedb59039f111 Daniel Borkmann 2015-08-14 126 static u16 xt_ct_flags_to_dir(const struct xt_ct_target_info_v1 *info)
deedb59039f111 Daniel Borkmann 2015-08-14 127 {
deedb59039f111 Daniel Borkmann 2015-08-14 128 switch (info->flags & (XT_CT_ZONE_DIR_ORIG |
deedb59039f111 Daniel Borkmann 2015-08-14 129 XT_CT_ZONE_DIR_REPL)) {
deedb59039f111 Daniel Borkmann 2015-08-14 130 case XT_CT_ZONE_DIR_ORIG:
deedb59039f111 Daniel Borkmann 2015-08-14 131 return NF_CT_ZONE_DIR_ORIG;
deedb59039f111 Daniel Borkmann 2015-08-14 132 case XT_CT_ZONE_DIR_REPL:
deedb59039f111 Daniel Borkmann 2015-08-14 133 return NF_CT_ZONE_DIR_REPL;
deedb59039f111 Daniel Borkmann 2015-08-14 134 default:
deedb59039f111 Daniel Borkmann 2015-08-14 135 return NF_CT_DEFAULT_ZONE_DIR;
deedb59039f111 Daniel Borkmann 2015-08-14 136 }
deedb59039f111 Daniel Borkmann 2015-08-14 137 }
deedb59039f111 Daniel Borkmann 2015-08-14 138
d52ed4379a8264 Pablo Neira Ayuso 2013-01-30 139 static int xt_ct_tg_check(const struct xt_tgchk_param *par,
d52ed4379a8264 Pablo Neira Ayuso 2013-01-30 140 struct xt_ct_target_info_v1 *info)
24de58f4651652 Pablo Neira Ayuso 2012-02-29 141 {
308ac9143ee220 Daniel Borkmann 2015-08-08 142 struct nf_conntrack_zone zone;
470acf55a02171 Gao Feng 2017-04-14 143 struct nf_conn_help *help;
24de58f4651652 Pablo Neira Ayuso 2012-02-29 144 struct nf_conn *ct;
4610476d89d537 Pablo Neira Ayuso 2013-01-10 145 int ret = -EOPNOTSUPP;
236df005614bea Pablo Neira Ayuso 2012-08-28 146
24de58f4651652 Pablo Neira Ayuso 2012-02-29 147 if (info->flags & XT_CT_NOTRACK) {
27e7190efd5b2f Eric Dumazet 2013-05-22 148 ct = NULL;
24de58f4651652 Pablo Neira Ayuso 2012-02-29 149 goto out;
24de58f4651652 Pablo Neira Ayuso 2012-02-29 150 }
24de58f4651652 Pablo Neira Ayuso 2012-02-29 151
24de58f4651652 Pablo Neira Ayuso 2012-02-29 152 #ifndef CONFIG_NF_CONNTRACK_ZONES
deedb59039f111 Daniel Borkmann 2015-08-14 153 if (info->zone || info->flags & (XT_CT_ZONE_DIR_ORIG |
5e8018fc61423e Daniel Borkmann 2015-08-14 154 XT_CT_ZONE_DIR_REPL |
5e8018fc61423e Daniel Borkmann 2015-08-14 155 XT_CT_ZONE_MARK))
24de58f4651652 Pablo Neira Ayuso 2012-02-29 156 goto err1;
24de58f4651652 Pablo Neira Ayuso 2012-02-29 157 #endif
24de58f4651652 Pablo Neira Ayuso 2012-02-29 158
ecb2421b5ddf48 Florian Westphal 2016-11-15 159 ret = nf_ct_netns_get(par->net, par->family);
24de58f4651652 Pablo Neira Ayuso 2012-02-29 160 if (ret < 0)
24de58f4651652 Pablo Neira Ayuso 2012-02-29 161 goto err1;
24de58f4651652 Pablo Neira Ayuso 2012-02-29 162
308ac9143ee220 Daniel Borkmann 2015-08-08 163 memset(&zone, 0, sizeof(zone));
308ac9143ee220 Daniel Borkmann 2015-08-08 164 zone.id = info->zone;
deedb59039f111 Daniel Borkmann 2015-08-14 165 zone.dir = xt_ct_flags_to_dir(info);
5e8018fc61423e Daniel Borkmann 2015-08-14 166 if (info->flags & XT_CT_ZONE_MARK)
5e8018fc61423e Daniel Borkmann 2015-08-14 167 zone.flags |= NF_CT_FLAG_MARK;
308ac9143ee220 Daniel Borkmann 2015-08-08 168
308ac9143ee220 Daniel Borkmann 2015-08-08 169 ct = nf_ct_tmpl_alloc(par->net, &zone, GFP_KERNEL);
1a727c63612fc5 Dan Carpenter 2015-07-28 170 if (!ct) {
1a727c63612fc5 Dan Carpenter 2015-07-28 171 ret = -ENOMEM;
24de58f4651652 Pablo Neira Ayuso 2012-02-29 172 goto err2;
1a727c63612fc5 Dan Carpenter 2015-07-28 173 }
24de58f4651652 Pablo Neira Ayuso 2012-02-29 174
24de58f4651652 Pablo Neira Ayuso 2012-02-29 175 ret = 0;
24de58f4651652 Pablo Neira Ayuso 2012-02-29 176 if ((info->ct_events || info->exp_events) &&
24de58f4651652 Pablo Neira Ayuso 2012-02-29 177 !nf_ct_ecache_ext_add(ct, info->ct_events, info->exp_events,
14abfa161d256c Eric Leblond 2014-01-02 178 GFP_KERNEL)) {
14abfa161d256c Eric Leblond 2014-01-02 179 ret = -EINVAL;
24de58f4651652 Pablo Neira Ayuso 2012-02-29 180 goto err3;
14abfa161d256c Eric Leblond 2014-01-02 181 }
24de58f4651652 Pablo Neira Ayuso 2012-02-29 182
24de58f4651652 Pablo Neira Ayuso 2012-02-29 183 if (info->helper[0]) {
8f4d19aacb64f2 Gao Feng 2018-05-30 184 if (strnlen(info->helper, sizeof(info->helper)) == sizeof(info->helper)) {
8f4d19aacb64f2 Gao Feng 2018-05-30 185 ret = -ENAMETOOLONG;
8f4d19aacb64f2 Gao Feng 2018-05-30 186 goto err3;
8f4d19aacb64f2 Gao Feng 2018-05-30 187 }
8f4d19aacb64f2 Gao Feng 2018-05-30 188
236df005614bea Pablo Neira Ayuso 2012-08-28 189 ret = xt_ct_set_helper(ct, info->helper, par);
236df005614bea Pablo Neira Ayuso 2012-08-28 190 if (ret < 0)
24de58f4651652 Pablo Neira Ayuso 2012-02-29 191 goto err3;
24de58f4651652 Pablo Neira Ayuso 2012-02-29 192 }
1afc56794e0322 Pablo Neira Ayuso 2012-06-07 193
6cf51852486af3 Pablo Neira Ayuso 2012-04-27 194 if (info->timeout[0]) {
8f4d19aacb64f2 Gao Feng 2018-05-30 195 if (strnlen(info->timeout, sizeof(info->timeout)) == sizeof(info->timeout)) {
8f4d19aacb64f2 Gao Feng 2018-05-30 196 ret = -ENAMETOOLONG;
8f4d19aacb64f2 Gao Feng 2018-05-30 197 goto err4;
8f4d19aacb64f2 Gao Feng 2018-05-30 198 }
8f4d19aacb64f2 Gao Feng 2018-05-30 199
236df005614bea Pablo Neira Ayuso 2012-08-28 200 ret = xt_ct_set_timeout(ct, par, info->timeout);
236df005614bea Pablo Neira Ayuso 2012-08-28 201 if (ret < 0)
470acf55a02171 Gao Feng 2017-04-14 202 goto err4;
24de58f4651652 Pablo Neira Ayuso 2012-02-29 203 }
0838aa7fcfcd87 Pablo Neira Ayuso 2015-07-13 204 __set_bit(IPS_CONFIRMED_BIT, &ct->status);
0838aa7fcfcd87 Pablo Neira Ayuso 2015-07-13 205 nf_conntrack_get(&ct->ct_general);
24de58f4651652 Pablo Neira Ayuso 2012-02-29 206 out:
24de58f4651652 Pablo Neira Ayuso 2012-02-29 207 info->ct = ct;
24de58f4651652 Pablo Neira Ayuso 2012-02-29 208 return 0;
24de58f4651652 Pablo Neira Ayuso 2012-02-29 209
470acf55a02171 Gao Feng 2017-04-14 210 err4:
470acf55a02171 Gao Feng 2017-04-14 211 help = nfct_help(ct);
470acf55a02171 Gao Feng 2017-04-14 212 if (help)
d91fc59cd77c71 Liping Zhang 2017-05-07 @213 nf_conntrack_helper_put(help->helper);
24de58f4651652 Pablo Neira Ayuso 2012-02-29 214 err3:
9cf94eab8b309e Daniel Borkmann 2015-08-31 215 nf_ct_tmpl_free(ct);
24de58f4651652 Pablo Neira Ayuso 2012-02-29 216 err2:
ecb2421b5ddf48 Florian Westphal 2016-11-15 217 nf_ct_netns_put(par->net, par->family);
24de58f4651652 Pablo Neira Ayuso 2012-02-29 218 err1:
24de58f4651652 Pablo Neira Ayuso 2012-02-29 219 return ret;
24de58f4651652 Pablo Neira Ayuso 2012-02-29 220 }
24de58f4651652 Pablo Neira Ayuso 2012-02-29 221

:::::: The code at line 99 was first introduced by commit
:::::: 236df005614bea6a2f9afa9867e3bdfc206c6291 netfilter: xt_CT: refactorize xt_ct_tg_check

:::::: TO: Pablo Neira Ayuso <pablo@xxxxxxxxxxxxx>
:::::: CC: Pablo Neira Ayuso <pablo@xxxxxxxxxxxxx>

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@xxxxxxxxxxxx

Attachment: .config.gz
Description: application/gzip