kernel/sched/fair.c:1201:33: sparse: sparse: incorrect type in argument 2 (different address spaces)
From: kernel test robot
Date: Mon Feb 16 2026 - 06:03:05 EST
tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: 0f2acd3148e0ef42bdacbd477f90e8533f96b2ac
commit: aa4f74dfd42ba4399f785fb9c460a11bd1756f0a sched: Fix runtime accounting w/ split exec & sched contexts
date: 7 months ago
config: i386-randconfig-063-20260216 (https://download.01.org/0day-ci/archive/20260216/202602161810.4BUc7i88-lkp@xxxxxxxxx/config)
compiler: gcc-14 (Debian 14.2.0-19) 14.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260216/202602161810.4BUc7i88-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/202602161810.4BUc7i88-lkp@xxxxxxxxx/
sparse warnings: (new ones prefixed by >>)
kernel/sched/fair.c:1167:49: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected struct task_struct *running @@ got struct task_struct [noderef] __rcu *curr @@
kernel/sched/fair.c:1167:49: sparse: expected struct task_struct *running
kernel/sched/fair.c:1167:49: sparse: got struct task_struct [noderef] __rcu *curr
>> kernel/sched/fair.c:1201:33: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected struct sched_entity *se @@ got struct sched_entity [noderef] __rcu * @@
kernel/sched/fair.c:1201:33: sparse: expected struct sched_entity *se
kernel/sched/fair.c:1201:33: sparse: got struct sched_entity [noderef] __rcu *
kernel/sched/fair.c:1259: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:1259:34: sparse: expected struct sched_entity const *se
kernel/sched/fair.c:1259:34: sparse: got struct sched_entity [noderef] __rcu *
kernel/sched/fair.c:12744: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:12744:9: sparse: expected struct sched_domain *[assigned] sd
kernel/sched/fair.c:12744:9: sparse: got struct sched_domain [noderef] __rcu *parent
kernel/sched/fair.c:6920: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:6920:58: sparse: expected struct task_struct *p
kernel/sched/fair.c:6920:58: sparse: got struct task_struct [noderef] __rcu *curr
kernel/sched/fair.c:8302: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:8302:20: sparse: expected struct sched_domain *[assigned] sd
kernel/sched/fair.c:8302:20: sparse: got struct sched_domain [noderef] __rcu *parent
kernel/sched/fair.c:8506: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:8506:9: sparse: expected struct sched_domain *[assigned] tmp
kernel/sched/fair.c:8506:9: sparse: got struct sched_domain [noderef] __rcu *parent
kernel/sched/fair.c:8648: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:8648:39: sparse: expected struct task_struct *donor
kernel/sched/fair.c:8648:39: sparse: got struct task_struct [noderef] __rcu *donor
kernel/sched/fair.c:8680: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:8680:37: sparse: expected struct task_struct *tsk
kernel/sched/fair.c:8680:37: sparse: got struct task_struct [noderef] __rcu *curr
kernel/sched/fair.c:8900: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:8900:38: sparse: expected struct task_struct *curr
kernel/sched/fair.c:8900:38: sparse: got struct task_struct [noderef] __rcu *curr
kernel/sched/fair.c:9917: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:9917:40: sparse: expected struct sched_domain *child
kernel/sched/fair.c:9917:40: sparse: got struct sched_domain [noderef] __rcu *child
kernel/sched/fair.c:10545:22: sparse: sparse: incompatible types in comparison expression (different address spaces):
kernel/sched/fair.c:10545:22: sparse: struct task_struct [noderef] __rcu *
kernel/sched/fair.c:10545:22: sparse: struct task_struct *
kernel/sched/fair.c:11990: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:11990:9: sparse: expected struct sched_domain *[assigned] sd
kernel/sched/fair.c:11990:9: sparse: got struct sched_domain [noderef] __rcu *parent
kernel/sched/fair.c:11640: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:11640:44: sparse: expected struct sched_domain *sd_parent
kernel/sched/fair.c:11640:44: sparse: got struct sched_domain [noderef] __rcu *parent
kernel/sched/fair.c:12105: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:12105:9: sparse: expected struct sched_domain *[assigned] sd
kernel/sched/fair.c:12105:9: sparse: got struct sched_domain [noderef] __rcu *parent
kernel/sched/fair.c:6637:35: sparse: sparse: marked inline, but without a definition
kernel/sched/fair.c: note: in included file:
kernel/sched/sched.h:2462:9: sparse: sparse: incompatible types in comparison expression (different address spaces):
kernel/sched/sched.h:2462:9: sparse: struct task_struct [noderef] __rcu *
kernel/sched/sched.h:2462:9: sparse: struct task_struct *
kernel/sched/sched.h:2262:26: sparse: sparse: incompatible types in comparison expression (different address spaces):
kernel/sched/sched.h:2262:26: sparse: struct task_struct [noderef] __rcu *
kernel/sched/sched.h:2262:26: sparse: struct task_struct *
kernel/sched/sched.h:2262:26: sparse: sparse: incompatible types in comparison expression (different address spaces):
kernel/sched/sched.h:2262:26: sparse: struct task_struct [noderef] __rcu *
kernel/sched/sched.h:2262:26: sparse: struct task_struct *
vim +1201 kernel/sched/fair.c
1154
1155 static s64 update_se(struct rq *rq, struct sched_entity *se)
1156 {
1157 u64 now = rq_clock_task(rq);
1158 s64 delta_exec;
1159
1160 delta_exec = now - se->exec_start;
1161 if (unlikely(delta_exec <= 0))
1162 return delta_exec;
1163
1164 se->exec_start = now;
1165 if (entity_is_task(se)) {
1166 struct task_struct *donor = task_of(se);
> 1167 struct task_struct *running = rq->curr;
1168 /*
1169 * If se is a task, we account the time against the running
1170 * task, as w/ proxy-exec they may not be the same.
1171 */
1172 running->se.exec_start = now;
1173 running->se.sum_exec_runtime += delta_exec;
1174
1175 trace_sched_stat_runtime(running, delta_exec);
1176 account_group_exec_runtime(running, delta_exec);
1177
1178 /* cgroup time is always accounted against the donor */
1179 cgroup_account_cputime(donor, delta_exec);
1180 } else {
1181 /* If not task, account the time against donor se */
1182 se->sum_exec_runtime += delta_exec;
1183 }
1184
1185 if (schedstat_enabled()) {
1186 struct sched_statistics *stats;
1187
1188 stats = __schedstats_from_se(se);
1189 __schedstat_set(stats->exec_max,
1190 max(delta_exec, stats->exec_max));
1191 }
1192
1193 return delta_exec;
1194 }
1195
1196 /*
1197 * Used by other classes to account runtime.
1198 */
1199 s64 update_curr_common(struct rq *rq)
1200 {
> 1201 return update_se(rq, &rq->donor->se);
1202 }
1203
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki