From: kernel test robot <lkp@intel.com>
To: Herbert Xu <herbert@gondor.apana.org.au>,
Eric Dumazet <eric.dumazet@gmail.com>,
"Gong, Sishuai" <sishuai@purdue.edu>,
"tgraf@suug.ch" <tgraf@suug.ch>,
"netdev@vger.kernel.org" <netdev@vger.kernel.org>,
"Sousa da Fonseca, Pedro Jose" <pfonseca@purdue.edu>
Cc: kbuild-all@lists.01.org
Subject: Re: [PATCH 2/2] rhashtable: Restore RCU marking on rhash_lock_head
Date: Fri, 24 Jul 2020 17:15:41 +0800 [thread overview]
Message-ID: <202007241732.CCLSy0N1%lkp@intel.com> (raw)
In-Reply-To: <20200724011830.GB8580@gondor.apana.org.au>
[-- Attachment #1: Type: text/plain, Size: 16520 bytes --]
Hi Herbert,
I love your patch! Perhaps something to improve:
[auto build test WARNING on linus/master]
[also build test WARNING on v5.8-rc6 next-20200723]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]
url: https://github.com/0day-ci/linux/commits/Herbert-Xu/rhashtable-Fix-unprotected-RCU-dereference-in-__rht_ptr/20200724-092031
base: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git d15be546031cf65a0fc34879beca02fd90fe7ac7
config: i386-randconfig-s002-20200724 (attached as .config)
compiler: gcc-9 (Debian 9.3.0-14) 9.3.0
reproduce:
# apt-get install sparse
# sparse version: v0.6.2-93-g4c6cbe55-dirty
# 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@intel.com>
sparse warnings: (new ones prefixed by >>)
net/sched/cls_flower.c:211:19: sparse: got restricted __be16 [usertype] dst
net/sched/cls_flower.c:211:19: sparse: sparse: cast from restricted __be16
net/sched/cls_flower.c:211:19: sparse: sparse: cast from restricted __be16
net/sched/cls_flower.c:214:21: sparse: sparse: cast from restricted __be16
net/sched/cls_flower.c:214:21: sparse: sparse: incorrect type in argument 1 (different base types) @@ expected unsigned short [usertype] val @@ got restricted __be16 [usertype] dst @@
net/sched/cls_flower.c:214:21: sparse: expected unsigned short [usertype] val
net/sched/cls_flower.c:214:21: sparse: got restricted __be16 [usertype] dst
net/sched/cls_flower.c:214:21: sparse: sparse: cast from restricted __be16
net/sched/cls_flower.c:214:21: sparse: sparse: cast from restricted __be16
net/sched/cls_flower.c:214:21: sparse: sparse: restricted __be16 degrades to integer
net/sched/cls_flower.c:214:51: sparse: sparse: restricted __be16 degrades to integer
net/sched/cls_flower.c:215:21: sparse: sparse: cast from restricted __be16
net/sched/cls_flower.c:215:21: sparse: sparse: incorrect type in argument 1 (different base types) @@ expected unsigned short [usertype] val @@ got restricted __be16 [usertype] dst @@
net/sched/cls_flower.c:215:21: sparse: expected unsigned short [usertype] val
net/sched/cls_flower.c:215:21: sparse: got restricted __be16 [usertype] dst
net/sched/cls_flower.c:215:21: sparse: sparse: cast from restricted __be16
net/sched/cls_flower.c:215:21: sparse: sparse: cast from restricted __be16
net/sched/cls_flower.c:215:21: sparse: sparse: restricted __be16 degrades to integer
net/sched/cls_flower.c:215:51: sparse: sparse: restricted __be16 degrades to integer
net/sched/cls_flower.c:231:20: sparse: sparse: cast from restricted __be16
net/sched/cls_flower.c:231:20: sparse: sparse: incorrect type in argument 1 (different base types) @@ expected unsigned short [usertype] val @@ got restricted __be16 [usertype] src @@
net/sched/cls_flower.c:231:20: sparse: expected unsigned short [usertype] val
net/sched/cls_flower.c:231:20: sparse: got restricted __be16 [usertype] src
net/sched/cls_flower.c:231:20: sparse: sparse: cast from restricted __be16
net/sched/cls_flower.c:231:20: sparse: sparse: cast from restricted __be16
net/sched/cls_flower.c:232:20: sparse: sparse: cast from restricted __be16
net/sched/cls_flower.c:232:20: sparse: sparse: incorrect type in argument 1 (different base types) @@ expected unsigned short [usertype] val @@ got restricted __be16 [usertype] src @@
net/sched/cls_flower.c:232:20: sparse: expected unsigned short [usertype] val
net/sched/cls_flower.c:232:20: sparse: got restricted __be16 [usertype] src
net/sched/cls_flower.c:232:20: sparse: sparse: cast from restricted __be16
net/sched/cls_flower.c:232:20: sparse: sparse: cast from restricted __be16
net/sched/cls_flower.c:233:19: sparse: sparse: cast from restricted __be16
net/sched/cls_flower.c:233:19: sparse: sparse: incorrect type in argument 1 (different base types) @@ expected unsigned short [usertype] val @@ got restricted __be16 [usertype] src @@
net/sched/cls_flower.c:233:19: sparse: expected unsigned short [usertype] val
net/sched/cls_flower.c:233:19: sparse: got restricted __be16 [usertype] src
net/sched/cls_flower.c:233:19: sparse: sparse: cast from restricted __be16
net/sched/cls_flower.c:233:19: sparse: sparse: cast from restricted __be16
net/sched/cls_flower.c:234:19: sparse: sparse: cast from restricted __be16
net/sched/cls_flower.c:234:19: sparse: sparse: incorrect type in argument 1 (different base types) @@ expected unsigned short [usertype] val @@ got restricted __be16 [usertype] src @@
net/sched/cls_flower.c:234:19: sparse: expected unsigned short [usertype] val
net/sched/cls_flower.c:234:19: sparse: got restricted __be16 [usertype] src
net/sched/cls_flower.c:234:19: sparse: sparse: cast from restricted __be16
net/sched/cls_flower.c:234:19: sparse: sparse: cast from restricted __be16
net/sched/cls_flower.c:237:21: sparse: sparse: cast from restricted __be16
net/sched/cls_flower.c:237:21: sparse: sparse: incorrect type in argument 1 (different base types) @@ expected unsigned short [usertype] val @@ got restricted __be16 [usertype] src @@
net/sched/cls_flower.c:237:21: sparse: expected unsigned short [usertype] val
net/sched/cls_flower.c:237:21: sparse: got restricted __be16 [usertype] src
net/sched/cls_flower.c:237:21: sparse: sparse: cast from restricted __be16
net/sched/cls_flower.c:237:21: sparse: sparse: cast from restricted __be16
net/sched/cls_flower.c:237:21: sparse: sparse: restricted __be16 degrades to integer
net/sched/cls_flower.c:237:51: sparse: sparse: restricted __be16 degrades to integer
net/sched/cls_flower.c:238:21: sparse: sparse: cast from restricted __be16
net/sched/cls_flower.c:238:21: sparse: sparse: incorrect type in argument 1 (different base types) @@ expected unsigned short [usertype] val @@ got restricted __be16 [usertype] src @@
net/sched/cls_flower.c:238:21: sparse: expected unsigned short [usertype] val
net/sched/cls_flower.c:238:21: sparse: got restricted __be16 [usertype] src
net/sched/cls_flower.c:238:21: sparse: sparse: cast from restricted __be16
net/sched/cls_flower.c:238:21: sparse: sparse: cast from restricted __be16
net/sched/cls_flower.c:238:21: sparse: sparse: restricted __be16 degrades to integer
net/sched/cls_flower.c:238:51: sparse: sparse: restricted __be16 degrades to integer
net/sched/cls_flower.c:769:13: sparse: sparse: cast from restricted __be16
net/sched/cls_flower.c:769:13: sparse: sparse: incorrect type in argument 1 (different base types) @@ expected unsigned short [usertype] val @@ got restricted __be16 [usertype] dst @@
net/sched/cls_flower.c:769:13: sparse: expected unsigned short [usertype] val
net/sched/cls_flower.c:769:13: sparse: got restricted __be16 [usertype] dst
net/sched/cls_flower.c:769:13: sparse: sparse: cast from restricted __be16
net/sched/cls_flower.c:769:13: sparse: sparse: cast from restricted __be16
net/sched/cls_flower.c:770:13: sparse: sparse: cast from restricted __be16
net/sched/cls_flower.c:770:13: sparse: sparse: incorrect type in argument 1 (different base types) @@ expected unsigned short [usertype] val @@ got restricted __be16 [usertype] dst @@
net/sched/cls_flower.c:770:13: sparse: expected unsigned short [usertype] val
net/sched/cls_flower.c:770:13: sparse: got restricted __be16 [usertype] dst
net/sched/cls_flower.c:770:13: sparse: sparse: cast from restricted __be16
net/sched/cls_flower.c:770:13: sparse: sparse: cast from restricted __be16
net/sched/cls_flower.c:769:13: sparse: sparse: restricted __be16 degrades to integer
net/sched/cls_flower.c:770:13: sparse: sparse: restricted __be16 degrades to integer
net/sched/cls_flower.c:777:13: sparse: sparse: cast from restricted __be16
net/sched/cls_flower.c:777:13: sparse: sparse: incorrect type in argument 1 (different base types) @@ expected unsigned short [usertype] val @@ got restricted __be16 [usertype] src @@
net/sched/cls_flower.c:777:13: sparse: expected unsigned short [usertype] val
net/sched/cls_flower.c:777:13: sparse: got restricted __be16 [usertype] src
net/sched/cls_flower.c:777:13: sparse: sparse: cast from restricted __be16
net/sched/cls_flower.c:777:13: sparse: sparse: cast from restricted __be16
net/sched/cls_flower.c:778:13: sparse: sparse: cast from restricted __be16
net/sched/cls_flower.c:778:13: sparse: sparse: incorrect type in argument 1 (different base types) @@ expected unsigned short [usertype] val @@ got restricted __be16 [usertype] src @@
net/sched/cls_flower.c:778:13: sparse: expected unsigned short [usertype] val
net/sched/cls_flower.c:778:13: sparse: got restricted __be16 [usertype] src
net/sched/cls_flower.c:778:13: sparse: sparse: cast from restricted __be16
net/sched/cls_flower.c:778:13: sparse: sparse: cast from restricted __be16
net/sched/cls_flower.c:777:13: sparse: sparse: restricted __be16 degrades to integer
net/sched/cls_flower.c:778:13: sparse: sparse: restricted __be16 degrades to integer
net/sched/cls_flower.c:1030:15: sparse: sparse: cast to restricted __be32
net/sched/cls_flower.c:1030:15: sparse: sparse: cast to restricted __be32
net/sched/cls_flower.c:1030:15: sparse: sparse: cast to restricted __be32
net/sched/cls_flower.c:1030:15: sparse: sparse: cast to restricted __be32
net/sched/cls_flower.c:1030:15: sparse: sparse: cast to restricted __be32
net/sched/cls_flower.c:1030:15: sparse: sparse: cast to restricted __be32
net/sched/cls_flower.c:1031:16: sparse: sparse: cast to restricted __be32
net/sched/cls_flower.c:1031:16: sparse: sparse: cast to restricted __be32
net/sched/cls_flower.c:1031:16: sparse: sparse: cast to restricted __be32
net/sched/cls_flower.c:1031:16: sparse: sparse: cast to restricted __be32
net/sched/cls_flower.c:1031:16: sparse: sparse: cast to restricted __be32
net/sched/cls_flower.c:1031:16: sparse: sparse: cast to restricted __be32
net/sched/cls_flower.c: note: in included file:
>> include/linux/rhashtable.h:1156:13: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected struct rhash_lock_head **bkt @@ got struct rhash_lock_head [noderef] __rcu ** @@
>> include/linux/rhashtable.h:1156:13: sparse: expected struct rhash_lock_head **bkt
>> include/linux/rhashtable.h:1156:13: sparse: got struct rhash_lock_head [noderef] __rcu **
>> include/linux/rhashtable.h:1161:23: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected struct rhash_lock_head [noderef] __rcu **bkt @@ got struct rhash_lock_head **bkt @@
>> include/linux/rhashtable.h:1161:23: sparse: expected struct rhash_lock_head [noderef] __rcu **bkt
>> include/linux/rhashtable.h:1161:23: sparse: got struct rhash_lock_head **bkt
>> include/linux/rhashtable.h:1163:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct rhash_lock_head [noderef] __rcu *const *bkt @@ got struct rhash_lock_head **bkt @@
>> include/linux/rhashtable.h:1163:9: sparse: expected struct rhash_lock_head [noderef] __rcu *const *bkt
include/linux/rhashtable.h:1163:9: sparse: got struct rhash_lock_head **bkt
include/linux/rhashtable.h:1172:41: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected struct rhash_lock_head [noderef] __rcu **bkt @@ got struct rhash_lock_head **bkt @@
include/linux/rhashtable.h:1172:41: sparse: expected struct rhash_lock_head [noderef] __rcu **bkt
include/linux/rhashtable.h:1172:41: sparse: got struct rhash_lock_head **bkt
include/linux/rhashtable.h:1174:48: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected struct rhash_lock_head [noderef] __rcu **bkt @@ got struct rhash_lock_head **bkt @@
include/linux/rhashtable.h:1174:48: sparse: expected struct rhash_lock_head [noderef] __rcu **bkt
include/linux/rhashtable.h:1174:48: sparse: got struct rhash_lock_head **bkt
include/linux/rhashtable.h:1180:25: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected struct rhash_lock_head [noderef] __rcu **bkt @@ got struct rhash_lock_head **bkt @@
include/linux/rhashtable.h:1180:25: sparse: expected struct rhash_lock_head [noderef] __rcu **bkt
include/linux/rhashtable.h:1180:25: sparse: got struct rhash_lock_head **bkt
vim +1156 include/linux/rhashtable.h
02fd97c3d4a8a14 Herbert Xu 2015-03-20 1136
3502cad73c4bbf8 Tom Herbert 2015-12-15 1137 /* Internal function, please use rhashtable_replace_fast() instead */
3502cad73c4bbf8 Tom Herbert 2015-12-15 1138 static inline int __rhashtable_replace_fast(
3502cad73c4bbf8 Tom Herbert 2015-12-15 1139 struct rhashtable *ht, struct bucket_table *tbl,
3502cad73c4bbf8 Tom Herbert 2015-12-15 1140 struct rhash_head *obj_old, struct rhash_head *obj_new,
3502cad73c4bbf8 Tom Herbert 2015-12-15 1141 const struct rhashtable_params params)
3502cad73c4bbf8 Tom Herbert 2015-12-15 1142 {
ba6306e3f648a85 Herbert Xu 2019-05-16 1143 struct rhash_lock_head **bkt;
3502cad73c4bbf8 Tom Herbert 2015-12-15 1144 struct rhash_head __rcu **pprev;
3502cad73c4bbf8 Tom Herbert 2015-12-15 1145 struct rhash_head *he;
3502cad73c4bbf8 Tom Herbert 2015-12-15 1146 unsigned int hash;
3502cad73c4bbf8 Tom Herbert 2015-12-15 1147 int err = -ENOENT;
3502cad73c4bbf8 Tom Herbert 2015-12-15 1148
3502cad73c4bbf8 Tom Herbert 2015-12-15 1149 /* Minimally, the old and new objects must have same hash
3502cad73c4bbf8 Tom Herbert 2015-12-15 1150 * (which should mean identifiers are the same).
3502cad73c4bbf8 Tom Herbert 2015-12-15 1151 */
3502cad73c4bbf8 Tom Herbert 2015-12-15 1152 hash = rht_head_hashfn(ht, tbl, obj_old, params);
3502cad73c4bbf8 Tom Herbert 2015-12-15 1153 if (hash != rht_head_hashfn(ht, tbl, obj_new, params))
3502cad73c4bbf8 Tom Herbert 2015-12-15 1154 return -EINVAL;
3502cad73c4bbf8 Tom Herbert 2015-12-15 1155
8f0db018006a421 NeilBrown 2019-04-02 @1156 bkt = rht_bucket_var(tbl, hash);
8f0db018006a421 NeilBrown 2019-04-02 1157 if (!bkt)
8f0db018006a421 NeilBrown 2019-04-02 1158 return -ENOENT;
3502cad73c4bbf8 Tom Herbert 2015-12-15 1159
8f0db018006a421 NeilBrown 2019-04-02 1160 pprev = NULL;
149212f07856b25 NeilBrown 2019-04-02 @1161 rht_lock(tbl, bkt);
3502cad73c4bbf8 Tom Herbert 2015-12-15 1162
adc6a3ab192eb40 NeilBrown 2019-04-12 @1163 rht_for_each_from(he, rht_ptr(bkt, tbl, hash), tbl, hash) {
3502cad73c4bbf8 Tom Herbert 2015-12-15 1164 if (he != obj_old) {
3502cad73c4bbf8 Tom Herbert 2015-12-15 1165 pprev = &he->next;
3502cad73c4bbf8 Tom Herbert 2015-12-15 1166 continue;
3502cad73c4bbf8 Tom Herbert 2015-12-15 1167 }
3502cad73c4bbf8 Tom Herbert 2015-12-15 1168
3502cad73c4bbf8 Tom Herbert 2015-12-15 1169 rcu_assign_pointer(obj_new->next, obj_old->next);
8f0db018006a421 NeilBrown 2019-04-02 1170 if (pprev) {
3502cad73c4bbf8 Tom Herbert 2015-12-15 1171 rcu_assign_pointer(*pprev, obj_new);
149212f07856b25 NeilBrown 2019-04-02 1172 rht_unlock(tbl, bkt);
8f0db018006a421 NeilBrown 2019-04-02 1173 } else {
149212f07856b25 NeilBrown 2019-04-02 1174 rht_assign_unlock(tbl, bkt, obj_new);
8f0db018006a421 NeilBrown 2019-04-02 1175 }
3502cad73c4bbf8 Tom Herbert 2015-12-15 1176 err = 0;
8f0db018006a421 NeilBrown 2019-04-02 1177 goto unlocked;
3502cad73c4bbf8 Tom Herbert 2015-12-15 1178 }
3502cad73c4bbf8 Tom Herbert 2015-12-15 1179
149212f07856b25 NeilBrown 2019-04-02 1180 rht_unlock(tbl, bkt);
8f0db018006a421 NeilBrown 2019-04-02 1181
8f0db018006a421 NeilBrown 2019-04-02 1182 unlocked:
3502cad73c4bbf8 Tom Herbert 2015-12-15 1183 return err;
3502cad73c4bbf8 Tom Herbert 2015-12-15 1184 }
3502cad73c4bbf8 Tom Herbert 2015-12-15 1185
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 28936 bytes --]
WARNING: multiple messages have this Message-ID (diff)
From: kernel test robot <lkp@intel.com>
To: kbuild-all@lists.01.org
Subject: Re: [PATCH 2/2] rhashtable: Restore RCU marking on rhash_lock_head
Date: Fri, 24 Jul 2020 17:15:41 +0800 [thread overview]
Message-ID: <202007241732.CCLSy0N1%lkp@intel.com> (raw)
In-Reply-To: <20200724011830.GB8580@gondor.apana.org.au>
[-- Attachment #1: Type: text/plain, Size: 16723 bytes --]
Hi Herbert,
I love your patch! Perhaps something to improve:
[auto build test WARNING on linus/master]
[also build test WARNING on v5.8-rc6 next-20200723]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]
url: https://github.com/0day-ci/linux/commits/Herbert-Xu/rhashtable-Fix-unprotected-RCU-dereference-in-__rht_ptr/20200724-092031
base: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git d15be546031cf65a0fc34879beca02fd90fe7ac7
config: i386-randconfig-s002-20200724 (attached as .config)
compiler: gcc-9 (Debian 9.3.0-14) 9.3.0
reproduce:
# apt-get install sparse
# sparse version: v0.6.2-93-g4c6cbe55-dirty
# 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@intel.com>
sparse warnings: (new ones prefixed by >>)
net/sched/cls_flower.c:211:19: sparse: got restricted __be16 [usertype] dst
net/sched/cls_flower.c:211:19: sparse: sparse: cast from restricted __be16
net/sched/cls_flower.c:211:19: sparse: sparse: cast from restricted __be16
net/sched/cls_flower.c:214:21: sparse: sparse: cast from restricted __be16
net/sched/cls_flower.c:214:21: sparse: sparse: incorrect type in argument 1 (different base types) @@ expected unsigned short [usertype] val @@ got restricted __be16 [usertype] dst @@
net/sched/cls_flower.c:214:21: sparse: expected unsigned short [usertype] val
net/sched/cls_flower.c:214:21: sparse: got restricted __be16 [usertype] dst
net/sched/cls_flower.c:214:21: sparse: sparse: cast from restricted __be16
net/sched/cls_flower.c:214:21: sparse: sparse: cast from restricted __be16
net/sched/cls_flower.c:214:21: sparse: sparse: restricted __be16 degrades to integer
net/sched/cls_flower.c:214:51: sparse: sparse: restricted __be16 degrades to integer
net/sched/cls_flower.c:215:21: sparse: sparse: cast from restricted __be16
net/sched/cls_flower.c:215:21: sparse: sparse: incorrect type in argument 1 (different base types) @@ expected unsigned short [usertype] val @@ got restricted __be16 [usertype] dst @@
net/sched/cls_flower.c:215:21: sparse: expected unsigned short [usertype] val
net/sched/cls_flower.c:215:21: sparse: got restricted __be16 [usertype] dst
net/sched/cls_flower.c:215:21: sparse: sparse: cast from restricted __be16
net/sched/cls_flower.c:215:21: sparse: sparse: cast from restricted __be16
net/sched/cls_flower.c:215:21: sparse: sparse: restricted __be16 degrades to integer
net/sched/cls_flower.c:215:51: sparse: sparse: restricted __be16 degrades to integer
net/sched/cls_flower.c:231:20: sparse: sparse: cast from restricted __be16
net/sched/cls_flower.c:231:20: sparse: sparse: incorrect type in argument 1 (different base types) @@ expected unsigned short [usertype] val @@ got restricted __be16 [usertype] src @@
net/sched/cls_flower.c:231:20: sparse: expected unsigned short [usertype] val
net/sched/cls_flower.c:231:20: sparse: got restricted __be16 [usertype] src
net/sched/cls_flower.c:231:20: sparse: sparse: cast from restricted __be16
net/sched/cls_flower.c:231:20: sparse: sparse: cast from restricted __be16
net/sched/cls_flower.c:232:20: sparse: sparse: cast from restricted __be16
net/sched/cls_flower.c:232:20: sparse: sparse: incorrect type in argument 1 (different base types) @@ expected unsigned short [usertype] val @@ got restricted __be16 [usertype] src @@
net/sched/cls_flower.c:232:20: sparse: expected unsigned short [usertype] val
net/sched/cls_flower.c:232:20: sparse: got restricted __be16 [usertype] src
net/sched/cls_flower.c:232:20: sparse: sparse: cast from restricted __be16
net/sched/cls_flower.c:232:20: sparse: sparse: cast from restricted __be16
net/sched/cls_flower.c:233:19: sparse: sparse: cast from restricted __be16
net/sched/cls_flower.c:233:19: sparse: sparse: incorrect type in argument 1 (different base types) @@ expected unsigned short [usertype] val @@ got restricted __be16 [usertype] src @@
net/sched/cls_flower.c:233:19: sparse: expected unsigned short [usertype] val
net/sched/cls_flower.c:233:19: sparse: got restricted __be16 [usertype] src
net/sched/cls_flower.c:233:19: sparse: sparse: cast from restricted __be16
net/sched/cls_flower.c:233:19: sparse: sparse: cast from restricted __be16
net/sched/cls_flower.c:234:19: sparse: sparse: cast from restricted __be16
net/sched/cls_flower.c:234:19: sparse: sparse: incorrect type in argument 1 (different base types) @@ expected unsigned short [usertype] val @@ got restricted __be16 [usertype] src @@
net/sched/cls_flower.c:234:19: sparse: expected unsigned short [usertype] val
net/sched/cls_flower.c:234:19: sparse: got restricted __be16 [usertype] src
net/sched/cls_flower.c:234:19: sparse: sparse: cast from restricted __be16
net/sched/cls_flower.c:234:19: sparse: sparse: cast from restricted __be16
net/sched/cls_flower.c:237:21: sparse: sparse: cast from restricted __be16
net/sched/cls_flower.c:237:21: sparse: sparse: incorrect type in argument 1 (different base types) @@ expected unsigned short [usertype] val @@ got restricted __be16 [usertype] src @@
net/sched/cls_flower.c:237:21: sparse: expected unsigned short [usertype] val
net/sched/cls_flower.c:237:21: sparse: got restricted __be16 [usertype] src
net/sched/cls_flower.c:237:21: sparse: sparse: cast from restricted __be16
net/sched/cls_flower.c:237:21: sparse: sparse: cast from restricted __be16
net/sched/cls_flower.c:237:21: sparse: sparse: restricted __be16 degrades to integer
net/sched/cls_flower.c:237:51: sparse: sparse: restricted __be16 degrades to integer
net/sched/cls_flower.c:238:21: sparse: sparse: cast from restricted __be16
net/sched/cls_flower.c:238:21: sparse: sparse: incorrect type in argument 1 (different base types) @@ expected unsigned short [usertype] val @@ got restricted __be16 [usertype] src @@
net/sched/cls_flower.c:238:21: sparse: expected unsigned short [usertype] val
net/sched/cls_flower.c:238:21: sparse: got restricted __be16 [usertype] src
net/sched/cls_flower.c:238:21: sparse: sparse: cast from restricted __be16
net/sched/cls_flower.c:238:21: sparse: sparse: cast from restricted __be16
net/sched/cls_flower.c:238:21: sparse: sparse: restricted __be16 degrades to integer
net/sched/cls_flower.c:238:51: sparse: sparse: restricted __be16 degrades to integer
net/sched/cls_flower.c:769:13: sparse: sparse: cast from restricted __be16
net/sched/cls_flower.c:769:13: sparse: sparse: incorrect type in argument 1 (different base types) @@ expected unsigned short [usertype] val @@ got restricted __be16 [usertype] dst @@
net/sched/cls_flower.c:769:13: sparse: expected unsigned short [usertype] val
net/sched/cls_flower.c:769:13: sparse: got restricted __be16 [usertype] dst
net/sched/cls_flower.c:769:13: sparse: sparse: cast from restricted __be16
net/sched/cls_flower.c:769:13: sparse: sparse: cast from restricted __be16
net/sched/cls_flower.c:770:13: sparse: sparse: cast from restricted __be16
net/sched/cls_flower.c:770:13: sparse: sparse: incorrect type in argument 1 (different base types) @@ expected unsigned short [usertype] val @@ got restricted __be16 [usertype] dst @@
net/sched/cls_flower.c:770:13: sparse: expected unsigned short [usertype] val
net/sched/cls_flower.c:770:13: sparse: got restricted __be16 [usertype] dst
net/sched/cls_flower.c:770:13: sparse: sparse: cast from restricted __be16
net/sched/cls_flower.c:770:13: sparse: sparse: cast from restricted __be16
net/sched/cls_flower.c:769:13: sparse: sparse: restricted __be16 degrades to integer
net/sched/cls_flower.c:770:13: sparse: sparse: restricted __be16 degrades to integer
net/sched/cls_flower.c:777:13: sparse: sparse: cast from restricted __be16
net/sched/cls_flower.c:777:13: sparse: sparse: incorrect type in argument 1 (different base types) @@ expected unsigned short [usertype] val @@ got restricted __be16 [usertype] src @@
net/sched/cls_flower.c:777:13: sparse: expected unsigned short [usertype] val
net/sched/cls_flower.c:777:13: sparse: got restricted __be16 [usertype] src
net/sched/cls_flower.c:777:13: sparse: sparse: cast from restricted __be16
net/sched/cls_flower.c:777:13: sparse: sparse: cast from restricted __be16
net/sched/cls_flower.c:778:13: sparse: sparse: cast from restricted __be16
net/sched/cls_flower.c:778:13: sparse: sparse: incorrect type in argument 1 (different base types) @@ expected unsigned short [usertype] val @@ got restricted __be16 [usertype] src @@
net/sched/cls_flower.c:778:13: sparse: expected unsigned short [usertype] val
net/sched/cls_flower.c:778:13: sparse: got restricted __be16 [usertype] src
net/sched/cls_flower.c:778:13: sparse: sparse: cast from restricted __be16
net/sched/cls_flower.c:778:13: sparse: sparse: cast from restricted __be16
net/sched/cls_flower.c:777:13: sparse: sparse: restricted __be16 degrades to integer
net/sched/cls_flower.c:778:13: sparse: sparse: restricted __be16 degrades to integer
net/sched/cls_flower.c:1030:15: sparse: sparse: cast to restricted __be32
net/sched/cls_flower.c:1030:15: sparse: sparse: cast to restricted __be32
net/sched/cls_flower.c:1030:15: sparse: sparse: cast to restricted __be32
net/sched/cls_flower.c:1030:15: sparse: sparse: cast to restricted __be32
net/sched/cls_flower.c:1030:15: sparse: sparse: cast to restricted __be32
net/sched/cls_flower.c:1030:15: sparse: sparse: cast to restricted __be32
net/sched/cls_flower.c:1031:16: sparse: sparse: cast to restricted __be32
net/sched/cls_flower.c:1031:16: sparse: sparse: cast to restricted __be32
net/sched/cls_flower.c:1031:16: sparse: sparse: cast to restricted __be32
net/sched/cls_flower.c:1031:16: sparse: sparse: cast to restricted __be32
net/sched/cls_flower.c:1031:16: sparse: sparse: cast to restricted __be32
net/sched/cls_flower.c:1031:16: sparse: sparse: cast to restricted __be32
net/sched/cls_flower.c: note: in included file:
>> include/linux/rhashtable.h:1156:13: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected struct rhash_lock_head **bkt @@ got struct rhash_lock_head [noderef] __rcu ** @@
>> include/linux/rhashtable.h:1156:13: sparse: expected struct rhash_lock_head **bkt
>> include/linux/rhashtable.h:1156:13: sparse: got struct rhash_lock_head [noderef] __rcu **
>> include/linux/rhashtable.h:1161:23: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected struct rhash_lock_head [noderef] __rcu **bkt @@ got struct rhash_lock_head **bkt @@
>> include/linux/rhashtable.h:1161:23: sparse: expected struct rhash_lock_head [noderef] __rcu **bkt
>> include/linux/rhashtable.h:1161:23: sparse: got struct rhash_lock_head **bkt
>> include/linux/rhashtable.h:1163:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct rhash_lock_head [noderef] __rcu *const *bkt @@ got struct rhash_lock_head **bkt @@
>> include/linux/rhashtable.h:1163:9: sparse: expected struct rhash_lock_head [noderef] __rcu *const *bkt
include/linux/rhashtable.h:1163:9: sparse: got struct rhash_lock_head **bkt
include/linux/rhashtable.h:1172:41: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected struct rhash_lock_head [noderef] __rcu **bkt @@ got struct rhash_lock_head **bkt @@
include/linux/rhashtable.h:1172:41: sparse: expected struct rhash_lock_head [noderef] __rcu **bkt
include/linux/rhashtable.h:1172:41: sparse: got struct rhash_lock_head **bkt
include/linux/rhashtable.h:1174:48: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected struct rhash_lock_head [noderef] __rcu **bkt @@ got struct rhash_lock_head **bkt @@
include/linux/rhashtable.h:1174:48: sparse: expected struct rhash_lock_head [noderef] __rcu **bkt
include/linux/rhashtable.h:1174:48: sparse: got struct rhash_lock_head **bkt
include/linux/rhashtable.h:1180:25: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected struct rhash_lock_head [noderef] __rcu **bkt @@ got struct rhash_lock_head **bkt @@
include/linux/rhashtable.h:1180:25: sparse: expected struct rhash_lock_head [noderef] __rcu **bkt
include/linux/rhashtable.h:1180:25: sparse: got struct rhash_lock_head **bkt
vim +1156 include/linux/rhashtable.h
02fd97c3d4a8a14 Herbert Xu 2015-03-20 1136
3502cad73c4bbf8 Tom Herbert 2015-12-15 1137 /* Internal function, please use rhashtable_replace_fast() instead */
3502cad73c4bbf8 Tom Herbert 2015-12-15 1138 static inline int __rhashtable_replace_fast(
3502cad73c4bbf8 Tom Herbert 2015-12-15 1139 struct rhashtable *ht, struct bucket_table *tbl,
3502cad73c4bbf8 Tom Herbert 2015-12-15 1140 struct rhash_head *obj_old, struct rhash_head *obj_new,
3502cad73c4bbf8 Tom Herbert 2015-12-15 1141 const struct rhashtable_params params)
3502cad73c4bbf8 Tom Herbert 2015-12-15 1142 {
ba6306e3f648a85 Herbert Xu 2019-05-16 1143 struct rhash_lock_head **bkt;
3502cad73c4bbf8 Tom Herbert 2015-12-15 1144 struct rhash_head __rcu **pprev;
3502cad73c4bbf8 Tom Herbert 2015-12-15 1145 struct rhash_head *he;
3502cad73c4bbf8 Tom Herbert 2015-12-15 1146 unsigned int hash;
3502cad73c4bbf8 Tom Herbert 2015-12-15 1147 int err = -ENOENT;
3502cad73c4bbf8 Tom Herbert 2015-12-15 1148
3502cad73c4bbf8 Tom Herbert 2015-12-15 1149 /* Minimally, the old and new objects must have same hash
3502cad73c4bbf8 Tom Herbert 2015-12-15 1150 * (which should mean identifiers are the same).
3502cad73c4bbf8 Tom Herbert 2015-12-15 1151 */
3502cad73c4bbf8 Tom Herbert 2015-12-15 1152 hash = rht_head_hashfn(ht, tbl, obj_old, params);
3502cad73c4bbf8 Tom Herbert 2015-12-15 1153 if (hash != rht_head_hashfn(ht, tbl, obj_new, params))
3502cad73c4bbf8 Tom Herbert 2015-12-15 1154 return -EINVAL;
3502cad73c4bbf8 Tom Herbert 2015-12-15 1155
8f0db018006a421 NeilBrown 2019-04-02 @1156 bkt = rht_bucket_var(tbl, hash);
8f0db018006a421 NeilBrown 2019-04-02 1157 if (!bkt)
8f0db018006a421 NeilBrown 2019-04-02 1158 return -ENOENT;
3502cad73c4bbf8 Tom Herbert 2015-12-15 1159
8f0db018006a421 NeilBrown 2019-04-02 1160 pprev = NULL;
149212f07856b25 NeilBrown 2019-04-02 @1161 rht_lock(tbl, bkt);
3502cad73c4bbf8 Tom Herbert 2015-12-15 1162
adc6a3ab192eb40 NeilBrown 2019-04-12 @1163 rht_for_each_from(he, rht_ptr(bkt, tbl, hash), tbl, hash) {
3502cad73c4bbf8 Tom Herbert 2015-12-15 1164 if (he != obj_old) {
3502cad73c4bbf8 Tom Herbert 2015-12-15 1165 pprev = &he->next;
3502cad73c4bbf8 Tom Herbert 2015-12-15 1166 continue;
3502cad73c4bbf8 Tom Herbert 2015-12-15 1167 }
3502cad73c4bbf8 Tom Herbert 2015-12-15 1168
3502cad73c4bbf8 Tom Herbert 2015-12-15 1169 rcu_assign_pointer(obj_new->next, obj_old->next);
8f0db018006a421 NeilBrown 2019-04-02 1170 if (pprev) {
3502cad73c4bbf8 Tom Herbert 2015-12-15 1171 rcu_assign_pointer(*pprev, obj_new);
149212f07856b25 NeilBrown 2019-04-02 1172 rht_unlock(tbl, bkt);
8f0db018006a421 NeilBrown 2019-04-02 1173 } else {
149212f07856b25 NeilBrown 2019-04-02 1174 rht_assign_unlock(tbl, bkt, obj_new);
8f0db018006a421 NeilBrown 2019-04-02 1175 }
3502cad73c4bbf8 Tom Herbert 2015-12-15 1176 err = 0;
8f0db018006a421 NeilBrown 2019-04-02 1177 goto unlocked;
3502cad73c4bbf8 Tom Herbert 2015-12-15 1178 }
3502cad73c4bbf8 Tom Herbert 2015-12-15 1179
149212f07856b25 NeilBrown 2019-04-02 1180 rht_unlock(tbl, bkt);
8f0db018006a421 NeilBrown 2019-04-02 1181
8f0db018006a421 NeilBrown 2019-04-02 1182 unlocked:
3502cad73c4bbf8 Tom Herbert 2015-12-15 1183 return err;
3502cad73c4bbf8 Tom Herbert 2015-12-15 1184 }
3502cad73c4bbf8 Tom Herbert 2015-12-15 1185
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org
[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 28936 bytes --]
next prev parent reply other threads:[~2020-07-24 9:29 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-07-24 1:08 [PATCH 0/2] rhashtable: Fix unprotected RCU dereference in __rht_ptr Herbert Xu
2020-07-24 1:13 ` [PATCH 1/2] " Herbert Xu
2020-07-24 1:18 ` [PATCH 2/2] rhashtable: Restore RCU marking on rhash_lock_head Herbert Xu
2020-07-24 9:15 ` kernel test robot [this message]
2020-07-24 9:15 ` kernel test robot
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=202007241732.CCLSy0N1%lkp@intel.com \
--to=lkp@intel.com \
--cc=eric.dumazet@gmail.com \
--cc=herbert@gondor.apana.org.au \
--cc=kbuild-all@lists.01.org \
--cc=netdev@vger.kernel.org \
--cc=pfonseca@purdue.edu \
--cc=sishuai@purdue.edu \
--cc=tgraf@suug.ch \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.