kernel/sched/ext.c:4349:13: sparse: sparse: incorrect type in assignment (different address spaces)
From: kernel test robot
Date: Mon May 04 2026 - 06:59:49 EST
tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: 6d35786de28116ecf78797a62b84e6bf3c45aa5a
commit: 80afd4c84bc8f5e80145ce35279f5ce53f6043db sched_ext: Read scx_root under scx_cgroup_ops_rwsem in cgroup setters
date: 9 days ago
config: arm64-randconfig-r113-20260503 (https://download.01.org/0day-ci/archive/20260504/202605041857.k9Gr1VQC-lkp@xxxxxxxxx/config)
compiler: aarch64-linux-gcc (GCC) 8.5.0
sparse: v0.6.5-rc1
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260504/202605041857.k9Gr1VQC-lkp@xxxxxxxxx/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Fixes: 80afd4c84bc8 ("sched_ext: Read scx_root under scx_cgroup_ops_rwsem in cgroup setters")
| Reported-by: kernel test robot <lkp@xxxxxxxxx>
| Closes: https://lore.kernel.org/oe-kbuild-all/202605041857.k9Gr1VQC-lkp@xxxxxxxxx/
sparse warnings: (new ones prefixed by >>)
kernel/sched/deadline.c:2947:13: sparse: struct task_struct [noderef] __rcu *
kernel/sched/deadline.c:3053:25: sparse: sparse: incompatible types in comparison expression (different address spaces):
kernel/sched/deadline.c:3053:25: sparse: struct task_struct *
kernel/sched/deadline.c:3053:25: sparse: struct task_struct [noderef] __rcu *
kernel/sched/deadline.c:2540:42: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected struct sched_dl_entity const *b @@ got struct sched_dl_entity [noderef] __rcu * @@
kernel/sched/deadline.c:2540:42: sparse: expected struct sched_dl_entity const *b
kernel/sched/deadline.c:2540:42: sparse: got struct sched_dl_entity [noderef] __rcu *
kernel/sched/deadline.c:2550:38: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct task_struct *tsk @@ got struct task_struct [noderef] __rcu *curr @@
kernel/sched/deadline.c:2550:38: sparse: expected struct task_struct *tsk
kernel/sched/deadline.c:2550:38: sparse: got struct task_struct [noderef] __rcu *curr
kernel/sched/deadline.c:1188:39: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct task_struct *p @@ got struct task_struct [noderef] __rcu *curr @@
kernel/sched/deadline.c:1188:39: sparse: expected struct task_struct *p
kernel/sched/deadline.c:1188:39: sparse: got struct task_struct [noderef] __rcu *curr
kernel/sched/deadline.c:1188:85: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected struct sched_dl_entity const *b @@ got struct sched_dl_entity [noderef] __rcu * @@
kernel/sched/deadline.c:1188:85: sparse: expected struct sched_dl_entity const *b
kernel/sched/deadline.c:1188:85: sparse: got struct sched_dl_entity [noderef] __rcu *
kernel/sched/deadline.c:1286:23: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct task_struct *p @@ got struct task_struct [noderef] __rcu *donor @@
kernel/sched/deadline.c:1286:23: sparse: expected struct task_struct *p
kernel/sched/deadline.c:1286:23: sparse: got struct task_struct [noderef] __rcu *donor
kernel/sched/deadline.c:1810:31: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct task_struct *p @@ got struct task_struct [noderef] __rcu *curr @@
kernel/sched/deadline.c:1810:31: sparse: expected struct task_struct *p
kernel/sched/deadline.c:1810:31: sparse: got struct task_struct [noderef] __rcu *curr
kernel/sched/deadline.c:1810:70: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected struct sched_dl_entity const *b @@ got struct sched_dl_entity [noderef] __rcu * @@
kernel/sched/deadline.c:1810:70: sparse: expected struct sched_dl_entity const *b
kernel/sched/deadline.c:1810:70: sparse: got struct sched_dl_entity [noderef] __rcu *
kernel/sched/deadline.c:1938:39: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected struct task_struct *donor @@ got struct task_struct [noderef] __rcu *donor @@
kernel/sched/deadline.c:1938:39: sparse: expected struct task_struct *donor
kernel/sched/deadline.c:1938:39: sparse: got struct task_struct [noderef] __rcu *donor
kernel/sched/deadline.c:2759:9: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected struct sched_domain *[assigned] sd @@ got struct sched_domain [noderef] __rcu *parent @@
kernel/sched/deadline.c:2759:9: sparse: expected struct sched_domain *[assigned] sd
kernel/sched/deadline.c:2759:9: sparse: got struct sched_domain [noderef] __rcu *parent
kernel/sched/deadline.c:2420:14: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected struct task_struct *curr @@ got struct task_struct [noderef] __rcu * @@
kernel/sched/deadline.c:2420:14: sparse: expected struct task_struct *curr
kernel/sched/deadline.c:2420:14: sparse: got struct task_struct [noderef] __rcu *
kernel/sched/deadline.c:2421:15: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected struct task_struct *donor @@ got struct task_struct [noderef] __rcu * @@
kernel/sched/deadline.c:2421:15: sparse: expected struct task_struct *donor
kernel/sched/deadline.c:2421:15: sparse: got struct task_struct [noderef] __rcu *
kernel/sched/deadline.c:2495:43: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected struct task_struct *p @@ got struct task_struct [noderef] __rcu *donor @@
kernel/sched/deadline.c:2495:43: sparse: expected struct task_struct *p
kernel/sched/deadline.c:2495:43: sparse: got struct task_struct [noderef] __rcu *donor
kernel/sched/deadline.c:3098:38: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct task_struct *tsk @@ got struct task_struct [noderef] __rcu *curr @@
kernel/sched/deadline.c:3098:38: sparse: expected struct task_struct *tsk
kernel/sched/deadline.c:3098:38: sparse: got struct task_struct [noderef] __rcu *curr
kernel/sched/deadline.c:3100:23: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct task_struct *p @@ got struct task_struct [noderef] __rcu *donor @@
kernel/sched/deadline.c:3100:23: sparse: expected struct task_struct *p
kernel/sched/deadline.c:3100:23: sparse: got struct task_struct [noderef] __rcu *donor
kernel/sched/deadline.c:3102:44: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected struct sched_dl_entity const *b @@ got struct sched_dl_entity [noderef] __rcu * @@
kernel/sched/deadline.c:3102:44: sparse: expected struct sched_dl_entity const *b
kernel/sched/deadline.c:3102:44: sparse: got struct sched_dl_entity [noderef] __rcu *
kernel/sched/deadline.c:3355:23: sparse: sparse: incompatible types in comparison expression (different address spaces):
kernel/sched/deadline.c:3355:23: sparse: struct task_struct [noderef] __rcu *
kernel/sched/deadline.c:3355:23: sparse: struct task_struct *
kernel/sched/deadline.c:3408:32: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct task_struct *p @@ got struct task_struct [noderef] __rcu *curr @@
kernel/sched/build_policy.c: note: in included file:
kernel/sched/ext.c:1274:38: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected struct task_struct *curr @@ got struct task_struct [noderef] __rcu *curr @@
kernel/sched/ext.c:1408:48: sparse: sparse: incompatible types in comparison expression (different address spaces):
kernel/sched/ext.c:1408:48: sparse: struct task_struct *
kernel/sched/ext.c:1408:48: sparse: struct task_struct [noderef] __rcu *
kernel/sched/ext.c:1558:66: sparse: sparse: incompatible types in comparison expression (different address spaces):
kernel/sched/ext.c:1558:66: sparse: struct task_struct [noderef] __rcu *
kernel/sched/ext.c:1558:66: sparse: struct task_struct *
kernel/sched/ext.c:2089:35: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected struct task_struct *p @@ got struct task_struct [noderef] __rcu *donor @@
kernel/sched/ext.c:2089:35: sparse: expected struct task_struct *p
kernel/sched/ext.c:2089:35: sparse: got struct task_struct [noderef] __rcu *donor
kernel/sched/ext.c:2100:38: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected struct task_struct *from @@ got struct task_struct [noderef] __rcu *donor @@
kernel/sched/ext.c:2100:38: sparse: expected struct task_struct *from
kernel/sched/ext.c:2100:38: sparse: got struct task_struct [noderef] __rcu *donor
kernel/sched/ext.c:2772:33: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected struct scx_sched *sch @@ got struct scx_sched [noderef] __rcu *[addressable] [toplevel] scx_root @@
kernel/sched/ext.c:2772:33: sparse: expected struct scx_sched *sch
kernel/sched/ext.c:2772:33: sparse: got struct scx_sched [noderef] __rcu *[addressable] [toplevel] scx_root
kernel/sched/ext.c:2908:33: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected struct scx_sched *sch @@ got struct scx_sched [noderef] __rcu *[addressable] [toplevel] scx_root @@
kernel/sched/ext.c:2908:33: sparse: expected struct scx_sched *sch
kernel/sched/ext.c:2908:33: sparse: got struct scx_sched [noderef] __rcu *[addressable] [toplevel] scx_root
kernel/sched/ext.c:3050:38: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected struct task_struct *prev @@ got struct task_struct [noderef] __rcu *curr @@
kernel/sched/ext.c:3050:38: sparse: expected struct task_struct *prev
kernel/sched/ext.c:3050:38: sparse: got struct task_struct [noderef] __rcu *curr
kernel/sched/ext.c:3279:33: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected struct scx_sched *sch @@ got struct scx_sched [noderef] __rcu *[addressable] [toplevel] scx_root @@
kernel/sched/ext.c:3279:33: sparse: expected struct scx_sched *sch
kernel/sched/ext.c:3279:33: sparse: got struct scx_sched [noderef] __rcu *[addressable] [toplevel] scx_root
kernel/sched/ext.c:3705:62: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected struct scx_sched *sch @@ got struct scx_sched [noderef] __rcu *scx_sched @@
kernel/sched/ext.c:3705:62: sparse: expected struct scx_sched *sch
kernel/sched/ext.c:3705:62: sparse: got struct scx_sched [noderef] __rcu *scx_sched
kernel/sched/ext.c:4187:35: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected struct task_struct *p @@ got struct task_struct [noderef] __rcu *curr @@
kernel/sched/ext.c:4187:35: sparse: expected struct task_struct *p
kernel/sched/ext.c:4187:35: sparse: got struct task_struct [noderef] __rcu *curr
kernel/sched/ext.c:4220:33: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected struct scx_sched *sch @@ got struct scx_sched [noderef] __rcu *[addressable] [toplevel] scx_root @@
kernel/sched/ext.c:4220:33: sparse: expected struct scx_sched *sch
kernel/sched/ext.c:4220:33: sparse: got struct scx_sched [noderef] __rcu *[addressable] [toplevel] scx_root
kernel/sched/ext.c:4249:33: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected struct scx_sched *sch @@ got struct scx_sched [noderef] __rcu *[addressable] [toplevel] scx_root @@
kernel/sched/ext.c:4249:33: sparse: expected struct scx_sched *sch
kernel/sched/ext.c:4249:33: sparse: got struct scx_sched [noderef] __rcu *[addressable] [toplevel] scx_root
kernel/sched/ext.c:4261:33: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected struct scx_sched *sch @@ got struct scx_sched [noderef] __rcu *[addressable] [toplevel] scx_root @@
kernel/sched/ext.c:4261:33: sparse: expected struct scx_sched *sch
kernel/sched/ext.c:4261:33: sparse: got struct scx_sched [noderef] __rcu *[addressable] [toplevel] scx_root
kernel/sched/ext.c:4309:33: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected struct scx_sched *sch @@ got struct scx_sched [noderef] __rcu *[addressable] [toplevel] scx_root @@
kernel/sched/ext.c:4309:33: sparse: expected struct scx_sched *sch
kernel/sched/ext.c:4309:33: sparse: got struct scx_sched [noderef] __rcu *[addressable] [toplevel] scx_root
kernel/sched/ext.c:4328:33: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected struct scx_sched *sch @@ got struct scx_sched [noderef] __rcu *[addressable] [toplevel] scx_root @@
kernel/sched/ext.c:4328:33: sparse: expected struct scx_sched *sch
kernel/sched/ext.c:4328:33: sparse: got struct scx_sched [noderef] __rcu *[addressable] [toplevel] scx_root
>> kernel/sched/ext.c:4349:13: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected struct scx_sched *sch @@ got struct scx_sched [noderef] __rcu *[addressable] [toplevel] scx_root @@
kernel/sched/ext.c:4349:13: sparse: expected struct scx_sched *sch
kernel/sched/ext.c:4349:13: sparse: got struct scx_sched [noderef] __rcu *[addressable] [toplevel] scx_root
kernel/sched/ext.c:4365:13: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected struct scx_sched *sch @@ got struct scx_sched [noderef] __rcu *[addressable] [toplevel] scx_root @@
kernel/sched/ext.c:4365:13: sparse: expected struct scx_sched *sch
kernel/sched/ext.c:4365:13: sparse: got struct scx_sched [noderef] __rcu *[addressable] [toplevel] scx_root
kernel/sched/ext.c:4382:13: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected struct scx_sched *sch @@ got struct scx_sched [noderef] __rcu *[addressable] [toplevel] scx_root @@
kernel/sched/ext.c:4382:13: sparse: expected struct scx_sched *sch
kernel/sched/ext.c:4382:13: sparse: got struct scx_sched [noderef] __rcu *[addressable] [toplevel] scx_root
kernel/sched/ext.c:5488:50: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected struct scx_kick_syncs **ksyncs @@ got struct scx_kick_syncs [noderef] __rcu ** @@
kernel/sched/ext.c:5488:50: sparse: expected struct scx_kick_syncs **ksyncs
kernel/sched/ext.c:5488:50: sparse: got struct scx_kick_syncs [noderef] __rcu **
kernel/sched/ext.c:5491:27: sparse: sparse: incompatible types in comparison expression (different address spaces):
kernel/sched/ext.c:5491:27: sparse: struct scx_kick_syncs [noderef] __rcu *
kernel/sched/ext.c:5491:27: sparse: struct scx_kick_syncs *
kernel/sched/ext.c:5491:27: sparse: sparse: incompatible types in comparison expression (different address spaces):
kernel/sched/ext.c:5491:27: sparse: struct scx_kick_syncs [noderef] __rcu *
kernel/sched/ext.c:5491:27: sparse: struct scx_kick_syncs *
kernel/sched/ext.c:6297:65: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected struct task_struct const *p @@ got struct task_struct [noderef] __rcu *curr @@
kernel/sched/ext.c:6297:65: sparse: expected struct task_struct const *p
kernel/sched/ext.c:6297:65: sparse: got struct task_struct [noderef] __rcu *curr
kernel/sched/ext.c:6298:57: sparse: sparse: incorrect type in argument 4 (different address spaces) @@ expected struct task_struct *p @@ got struct task_struct [noderef] __rcu *curr @@
kernel/sched/ext.c:6298:57: sparse: expected struct task_struct *p
kernel/sched/ext.c:6298:57: sparse: got struct task_struct [noderef] __rcu *curr
kernel/sched/ext.c:6380:50: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected struct scx_kick_syncs **ksyncs @@ got struct scx_kick_syncs [noderef] __rcu ** @@
kernel/sched/ext.c:6380:50: sparse: expected struct scx_kick_syncs **ksyncs
kernel/sched/ext.c:6380:50: sparse: got struct scx_kick_syncs [noderef] __rcu **
kernel/sched/ext.c:6383:17: sparse: sparse: incompatible types in comparison expression (different address spaces):
kernel/sched/ext.c:6383:17: sparse: struct scx_kick_syncs [noderef] __rcu *
kernel/sched/ext.c:6383:17: sparse: struct scx_kick_syncs *
kernel/sched/ext.c:6392:17: sparse: sparse: incompatible types in comparison expression (different address spaces):
kernel/sched/ext.c:6392:17: sparse: struct scx_kick_syncs [noderef] __rcu *
kernel/sched/ext.c:6392:17: sparse: struct scx_kick_syncs *
kernel/sched/ext.c:6904:40: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected struct scx_sched *parent @@ got struct scx_sched [noderef] __rcu *scx_sched @@
kernel/sched/ext.c:6904:40: sparse: expected struct scx_sched *parent
kernel/sched/ext.c:6904:40: sparse: got struct scx_sched [noderef] __rcu *scx_sched
kernel/sched/ext.c:7192:38: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct scx_sched *sch @@ got struct scx_sched [noderef] __rcu *scx_sched @@
kernel/sched/ext.c:7192:38: sparse: expected struct scx_sched *sch
kernel/sched/ext.c:7192:38: sparse: got struct scx_sched [noderef] __rcu *scx_sched
kernel/sched/ext.c:7611:32: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct task_struct const *p @@ got struct task_struct [noderef] __rcu *curr @@
kernel/sched/ext.c:7611:32: sparse: expected struct task_struct const *p
kernel/sched/ext.c:7611:32: sparse: got struct task_struct [noderef] __rcu *curr
kernel/sched/ext.c:8960:18: sparse: sparse: symbol 'scx_bpf_reenqueue_local___v2' was not declared. Should it be static?
kernel/sched/ext.c:9288:33: sparse: sparse: incompatible types in comparison expression (different address spaces):
kernel/sched/ext.c:9288:33: sparse: struct task_struct [noderef] __rcu *
kernel/sched/ext.c:9288:33: sparse: struct task_struct const *
kernel/sched/build_policy.c: note: in included file:
kernel/sched/ext_idle.c:755:33: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected struct scx_sched *sch @@ got struct scx_sched [noderef] __rcu *[addressable] [assigned] [toplevel] scx_root @@
kernel/sched/ext_idle.c:775:49: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct task_struct const *p @@ got struct task_struct [noderef] __rcu *curr @@
vim +4349 kernel/sched/ext.c
4343
4344 void scx_group_set_weight(struct task_group *tg, unsigned long weight)
4345 {
4346 struct scx_sched *sch;
4347
4348 percpu_down_read(&scx_cgroup_ops_rwsem);
> 4349 sch = scx_root;
4350
4351 if (scx_cgroup_enabled && SCX_HAS_OP(sch, cgroup_set_weight) &&
4352 tg->scx.weight != weight)
4353 SCX_CALL_OP(sch, cgroup_set_weight, NULL, tg_cgrp(tg), weight);
4354
4355 tg->scx.weight = weight;
4356
4357 percpu_up_read(&scx_cgroup_ops_rwsem);
4358 }
4359
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki