tree: https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git master head: 6cc11d2a1759275b856e464265823d94aabd5eaf commit: 8914dcab0cdce258effdba984db9d9eb8fddb391 [6615/7019] Maple Tree: add new data structure config: sparc-randconfig-s031-20220629 (https://download.01.org/0day-ci/archive/20220701/202207011057.50iOfKNC-lkp@xxxxxxxxx/config) compiler: sparc-linux-gcc (GCC) 11.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.4-39-gce1a6720-dirty # https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/commit/?id=8914dcab0cdce258effdba984db9d9eb8fddb391 git remote add linux-next https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git git fetch --no-tags linux-next master git checkout 8914dcab0cdce258effdba984db9d9eb8fddb391 # save the config file mkdir build_dir && cp config build_dir/.config COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-11.3.0 make.cross C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' O=build_dir ARCH=sparc SHELL=/bin/bash If you fix the issue, kindly add following tag where applicable Reported-by: kernel test robot <lkp@xxxxxxxxx> sparse warnings: (new ones prefixed by >>) >> lib/maple_tree.c:5506:69: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct maple_enode const *entry @@ got void [noderef] __rcu * @@ lib/maple_tree.c:5506:69: sparse: expected struct maple_enode const *entry lib/maple_tree.c:5506:69: sparse: got void [noderef] __rcu * lib/maple_tree.c:5507:38: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct maple_enode const *entry @@ got void [noderef] __rcu * @@ lib/maple_tree.c:5507:38: sparse: expected struct maple_enode const *entry lib/maple_tree.c:5507:38: sparse: got void [noderef] __rcu * >> lib/maple_tree.c:2322:17: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected void **l_slots @@ got void [noderef] __rcu ** @@ lib/maple_tree.c:2322:17: sparse: expected void **l_slots lib/maple_tree.c:2322:17: sparse: got void [noderef] __rcu ** >> lib/maple_tree.c:2325:17: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected void **r_slots @@ got void [noderef] __rcu ** @@ lib/maple_tree.c:2325:17: sparse: expected void **r_slots lib/maple_tree.c:2325:17: sparse: got void [noderef] __rcu ** >> lib/maple_tree.c:2329:57: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void [noderef] __rcu **slots @@ got void **l_slots @@ lib/maple_tree.c:2329:57: sparse: expected void [noderef] __rcu **slots lib/maple_tree.c:2329:57: sparse: got void **l_slots >> lib/maple_tree.c:2333:57: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void [noderef] __rcu **slots @@ got void **r_slots @@ lib/maple_tree.c:2333:57: sparse: expected void [noderef] __rcu **slots lib/maple_tree.c:2333:57: sparse: got void **r_slots lib/maple_tree.c:2351:57: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void [noderef] __rcu **slots @@ got void **l_slots @@ lib/maple_tree.c:2351:57: sparse: expected void [noderef] __rcu **slots lib/maple_tree.c:2351:57: sparse: got void **l_slots lib/maple_tree.c:2358:57: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void [noderef] __rcu **slots @@ got void **r_slots @@ lib/maple_tree.c:2358:57: sparse: expected void [noderef] __rcu **slots lib/maple_tree.c:2358:57: sparse: got void **r_slots >> lib/maple_tree.c:2322:17: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected void **l_slots @@ got void [noderef] __rcu ** @@ lib/maple_tree.c:2322:17: sparse: expected void **l_slots lib/maple_tree.c:2322:17: sparse: got void [noderef] __rcu ** >> lib/maple_tree.c:2325:17: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected void **r_slots @@ got void [noderef] __rcu ** @@ lib/maple_tree.c:2325:17: sparse: expected void **r_slots lib/maple_tree.c:2325:17: sparse: got void [noderef] __rcu ** >> lib/maple_tree.c:2329:57: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void [noderef] __rcu **slots @@ got void **l_slots @@ lib/maple_tree.c:2329:57: sparse: expected void [noderef] __rcu **slots lib/maple_tree.c:2329:57: sparse: got void **l_slots >> lib/maple_tree.c:2333:57: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void [noderef] __rcu **slots @@ got void **r_slots @@ lib/maple_tree.c:2333:57: sparse: expected void [noderef] __rcu **slots lib/maple_tree.c:2333:57: sparse: got void **r_slots lib/maple_tree.c:2351:57: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void [noderef] __rcu **slots @@ got void **l_slots @@ lib/maple_tree.c:2351:57: sparse: expected void [noderef] __rcu **slots lib/maple_tree.c:2351:57: sparse: got void **l_slots lib/maple_tree.c:2358:57: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void [noderef] __rcu **slots @@ got void **r_slots @@ lib/maple_tree.c:2358:57: sparse: expected void [noderef] __rcu **slots lib/maple_tree.c:2358:57: sparse: got void **r_slots lib/maple_tree.c:5444:9: sparse: sparse: context imbalance in 'mt_free_walk' - different lock contexts for basic block vim +5506 lib/maple_tree.c 5472 5473 static void mt_destroy_walk(struct maple_enode *enode, unsigned char ma_flags, 5474 bool free) 5475 { 5476 void __rcu **slots; 5477 struct maple_node *node = mte_to_node(enode); 5478 struct maple_enode *start; 5479 struct maple_tree mt; 5480 5481 MA_STATE(mas, &mt, 0, 0); 5482 5483 if (mte_is_leaf(enode)) 5484 goto free_leaf; 5485 5486 mt_init_flags(&mt, ma_flags); 5487 mas_lock(&mas); 5488 5489 mas.node = start = enode; 5490 slots = mas_destroy_descend(&mas, start, 0); 5491 node = mas_mn(&mas); 5492 do { 5493 enum maple_type type; 5494 unsigned char offset; 5495 5496 node->slot_len = mas_dead_leaves(&mas, slots); 5497 if (free) 5498 mt_free_bulk(node->slot_len, slots); 5499 offset = node->parent_slot + 1; 5500 mas.node = node->piv_parent; 5501 if (mas_mn(&mas) == node) 5502 goto start_slots_free; 5503 5504 type = mte_node_type(mas.node); 5505 slots = ma_slots(mte_to_node(mas.node), type); > 5506 if ((offset < mt_slots[type]) && mte_node_type(slots[offset]) && > 5507 mte_to_node(slots[offset])) { 5508 struct maple_enode *parent = mas.node; 5509 5510 mas.node = mas_slot_locked(&mas, slots, offset); 5511 slots = mas_destroy_descend(&mas, parent, offset); 5512 } 5513 node = mas_mn(&mas); 5514 } while (start != mas.node); 5515 5516 node = mas_mn(&mas); 5517 node->slot_len = mas_dead_leaves(&mas, slots); 5518 if (free) 5519 mt_free_bulk(node->slot_len, slots); 5520 5521 start_slots_free: 5522 mas_unlock(&mas); 5523 5524 free_leaf: 5525 if (free) 5526 mt_free_rcu(&node->rcu); 5527 } 5528 -- 0-DAY CI Kernel Test Service https://01.org/lkp