kernel/sched/fair.c:1203:39: sparse: sparse: incorrect type in initializer (different address spaces)

From: kernel test robot

Date: Mon Feb 16 2026 - 12:30:33 EST


tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: 0f2acd3148e0ef42bdacbd477f90e8533f96b2ac
commit: af0c8b2bf67b25756f27644936e74fd9a6273bd2 sched: Split scheduler and execution contexts
date: 1 year, 4 months ago
config: i386-randconfig-062-20260216 (https://download.01.org/0day-ci/archive/20260217/202602170126.C1jPrrS3-lkp@xxxxxxxxx/config)
compiler: clang version 20.1.8 (https://github.com/llvm/llvm-project 87f0227cb60147a26a1eeb4fb06e3b505e9c7261)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260217/202602170126.C1jPrrS3-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
| Reported-by: kernel test robot <lkp@xxxxxxxxx>
| Closes: https://lore.kernel.org/oe-kbuild-all/202602170126.C1jPrrS3-lkp@xxxxxxxxx/

sparse warnings: (new ones prefixed by >>)
>> kernel/sched/fair.c:1203:39: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected struct task_struct *donor @@ got struct task_struct [noderef] __rcu *donor @@
kernel/sched/fair.c:1203:39: sparse: expected struct task_struct *donor
kernel/sched/fair.c:1203:39: sparse: got struct task_struct [noderef] __rcu *donor
kernel/sched/fair.c:1261:34: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct sched_entity const *se @@ got struct sched_entity [noderef] __rcu * @@
kernel/sched/fair.c:1261:34: sparse: expected struct sched_entity const *se
kernel/sched/fair.c:1261:34: sparse: got struct sched_entity [noderef] __rcu *
kernel/sched/fair.c:12772: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/fair.c:12772:9: sparse: expected struct sched_domain *[assigned] sd
kernel/sched/fair.c:12772:9: sparse: got struct sched_domain [noderef] __rcu *parent
kernel/sched/fair.c:6103:22: sparse: sparse: incompatible types in comparison expression (different address spaces):
kernel/sched/fair.c:6103:22: sparse: struct task_struct [noderef] __rcu *
kernel/sched/fair.c:6103:22: sparse: struct task_struct *
kernel/sched/fair.c:7036:58: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected struct task_struct *p @@ got struct task_struct [noderef] __rcu *curr @@
kernel/sched/fair.c:7036:58: sparse: expected struct task_struct *p
kernel/sched/fair.c:7036:58: sparse: got struct task_struct [noderef] __rcu *curr
kernel/sched/fair.c:8404:20: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected struct sched_domain *[assigned] sd @@ got struct sched_domain [noderef] __rcu *parent @@
kernel/sched/fair.c:8404:20: sparse: expected struct sched_domain *[assigned] sd
kernel/sched/fair.c:8404:20: sparse: got struct sched_domain [noderef] __rcu *parent
kernel/sched/fair.c:8608:9: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected struct sched_domain *[assigned] tmp @@ got struct sched_domain [noderef] __rcu *parent @@
kernel/sched/fair.c:8608:9: sparse: expected struct sched_domain *[assigned] tmp
kernel/sched/fair.c:8608:9: sparse: got struct sched_domain [noderef] __rcu *parent
kernel/sched/fair.c:8753:39: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected struct task_struct *donor @@ got struct task_struct [noderef] __rcu *donor @@
kernel/sched/fair.c:8753:39: sparse: expected struct task_struct *donor
kernel/sched/fair.c:8753:39: sparse: got struct task_struct [noderef] __rcu *donor
kernel/sched/fair.c:8784:37: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct task_struct *tsk @@ got struct task_struct [noderef] __rcu *curr @@
kernel/sched/fair.c:8784:37: sparse: expected struct task_struct *tsk
kernel/sched/fair.c:8784:37: sparse: got struct task_struct [noderef] __rcu *curr
kernel/sched/fair.c:8995:38: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected struct task_struct *curr @@ got struct task_struct [noderef] __rcu *curr @@
kernel/sched/fair.c:8995:38: sparse: expected struct task_struct *curr
kernel/sched/fair.c:8995:38: sparse: got struct task_struct [noderef] __rcu *curr
kernel/sched/fair.c:9966:40: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected struct sched_domain *child @@ got struct sched_domain [noderef] __rcu *child @@
kernel/sched/fair.c:9966:40: sparse: expected struct sched_domain *child
kernel/sched/fair.c:9966:40: sparse: got struct sched_domain [noderef] __rcu *child
kernel/sched/fair.c:10588:22: sparse: sparse: incompatible types in comparison expression (different address spaces):
kernel/sched/fair.c:10588:22: sparse: struct task_struct [noderef] __rcu *
kernel/sched/fair.c:10588:22: sparse: struct task_struct *
kernel/sched/fair.c:12011: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/fair.c:12011:9: sparse: expected struct sched_domain *[assigned] sd
kernel/sched/fair.c:12011:9: sparse: got struct sched_domain [noderef] __rcu *parent
kernel/sched/fair.c:11661:44: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected struct sched_domain *sd_parent @@ got struct sched_domain [noderef] __rcu *parent @@
kernel/sched/fair.c:11661:44: sparse: expected struct sched_domain *sd_parent
kernel/sched/fair.c:11661:44: sparse: got struct sched_domain [noderef] __rcu *parent
kernel/sched/fair.c:12120: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/fair.c:12120:9: sparse: expected struct sched_domain *[assigned] sd
kernel/sched/fair.c:12120:9: sparse: got struct sched_domain [noderef] __rcu *parent
kernel/sched/fair.c:7517:28: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected struct sched_domain *sd @@ got struct sched_domain [noderef] __rcu *child @@
kernel/sched/fair.c:7517:28: sparse: expected struct sched_domain *sd
kernel/sched/fair.c:7517:28: sparse: got struct sched_domain [noderef] __rcu *child
kernel/sched/fair.c:7523:28: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected struct sched_domain *sd @@ got struct sched_domain [noderef] __rcu *child @@
kernel/sched/fair.c:7523:28: sparse: expected struct sched_domain *sd
kernel/sched/fair.c:7523:28: sparse: got struct sched_domain [noderef] __rcu *child
kernel/sched/fair.c:7530:28: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected struct sched_domain *sd @@ got struct sched_domain [noderef] __rcu *child @@
kernel/sched/fair.c:7530:28: sparse: expected struct sched_domain *sd
kernel/sched/fair.c:7530:28: sparse: got struct sched_domain [noderef] __rcu *child
kernel/sched/fair.c:7538:17: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected struct sched_domain *[assigned] tmp @@ got struct sched_domain [noderef] __rcu *parent @@
kernel/sched/fair.c:7538:17: sparse: expected struct sched_domain *[assigned] tmp
kernel/sched/fair.c:7538:17: sparse: got struct sched_domain [noderef] __rcu *parent
kernel/sched/fair.c:8692:9: sparse: sparse: context imbalance in 'task_dead_fair' - wrong count at exit
kernel/sched/fair.c: note: in included file:
kernel/sched/sched.h:2496:9: sparse: sparse: incompatible types in comparison expression (different address spaces):
kernel/sched/sched.h:2496:9: sparse: struct task_struct [noderef] __rcu *
kernel/sched/sched.h:2496:9: sparse: struct task_struct *
kernel/sched/sched.h:2287:26: sparse: sparse: incompatible types in comparison expression (different address spaces):
kernel/sched/sched.h:2287:26: sparse: struct task_struct [noderef] __rcu *
kernel/sched/sched.h:2287:26: sparse: struct task_struct *
kernel/sched/sched.h:2287:26: sparse: sparse: incompatible types in comparison expression (different address spaces):
kernel/sched/sched.h:2287:26: sparse: struct task_struct [noderef] __rcu *
kernel/sched/sched.h:2287:26: sparse: struct task_struct *

vim +1203 kernel/sched/fair.c

1197
1198 /*
1199 * Used by other classes to account runtime.
1200 */
1201 s64 update_curr_common(struct rq *rq)
1202 {
> 1203 struct task_struct *donor = rq->donor;
1204 s64 delta_exec;
1205
1206 delta_exec = update_curr_se(rq, &donor->se);
1207 if (likely(delta_exec > 0))
1208 update_curr_task(donor, delta_exec);
1209
1210 return delta_exec;
1211 }
1212

--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki