kernel/sched/fair.c:10562:22: sparse: sparse: incompatible types in comparison expression (different address spaces):

From: kernel test robot

Date: Mon Jun 01 2026 - 15:48:42 EST


tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: e43ffb69e0438cddd72aaa30898b4dc446f664f8
commit: cac5cefbade90ff0bb0b393d301fa3b5234cf056 sched/smp: Make SMP unconditional
date: 12 months ago
config: m68k-randconfig-r132-20260601 (https://download.01.org/0day-ci/archive/20260602/202606020334.23LlDhQn-lkp@xxxxxxxxx/config)
compiler: m68k-linux-gcc (GCC) 11.5.0
sparse: v0.6.5-rc1
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260602/202606020334.23LlDhQn-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: cac5cefbade9 ("sched/smp: Make SMP unconditional")
| Reported-by: kernel test robot <lkp@xxxxxxxxx>
| Closes: https://lore.kernel.org/oe-kbuild-all/202606020334.23LlDhQn-lkp@xxxxxxxxx/

sparse warnings: (new ones prefixed by >>)
kernel/sched/fair.c:1196: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:1196:39: sparse: expected struct task_struct *donor
kernel/sched/fair.c:1196:39: sparse: got struct task_struct [noderef] __rcu *donor
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:12755: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:12755:9: sparse: expected struct sched_domain *[assigned] sd
kernel/sched/fair.c:12755:9: sparse: got struct sched_domain [noderef] __rcu *parent
kernel/sched/fair.c:6936: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:6936:58: sparse: expected struct task_struct *p
kernel/sched/fair.c:6936:58: sparse: got struct task_struct [noderef] __rcu *curr
kernel/sched/fair.c:8322: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:8322:20: sparse: expected struct sched_domain *[assigned] sd
kernel/sched/fair.c:8322:20: sparse: got struct sched_domain [noderef] __rcu *parent
kernel/sched/fair.c:8526: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:8526:9: sparse: expected struct sched_domain *[assigned] tmp
kernel/sched/fair.c:8526:9: sparse: got struct sched_domain [noderef] __rcu *parent
kernel/sched/fair.c:8668: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:8668:39: sparse: expected struct task_struct *donor
kernel/sched/fair.c:8668:39: sparse: got struct task_struct [noderef] __rcu *donor
kernel/sched/fair.c:8699: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:8699:37: sparse: expected struct task_struct *tsk
kernel/sched/fair.c:8699:37: sparse: got struct task_struct [noderef] __rcu *curr
kernel/sched/fair.c:8917: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:8917:38: sparse: expected struct task_struct *curr
kernel/sched/fair.c:8917:38: sparse: got struct task_struct [noderef] __rcu *curr
kernel/sched/fair.c:9934: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:9934:40: sparse: expected struct sched_domain *child
kernel/sched/fair.c:9934:40: sparse: got struct sched_domain [noderef] __rcu *child
>> kernel/sched/fair.c:10562:22: sparse: sparse: incompatible types in comparison expression (different address spaces):
kernel/sched/fair.c:10562:22: sparse: struct task_struct [noderef] __rcu *
kernel/sched/fair.c:10562:22: sparse: struct task_struct *
kernel/sched/fair.c:12007: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:12007:9: sparse: expected struct sched_domain *[assigned] sd
kernel/sched/fair.c:12007:9: sparse: got struct sched_domain [noderef] __rcu *parent
kernel/sched/fair.c:11657: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:11657:44: sparse: expected struct sched_domain *sd_parent
kernel/sched/fair.c:11657:44: sparse: got struct sched_domain [noderef] __rcu *parent
kernel/sched/fair.c:12116: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:12116:9: sparse: expected struct sched_domain *[assigned] sd
kernel/sched/fair.c:12116:9: sparse: got struct sched_domain [noderef] __rcu *parent
kernel/sched/fair.c:6653:35: sparse: sparse: marked inline, but without a definition
kernel/sched/fair.c: note: in included file:
kernel/sched/sched.h:2460:9: sparse: sparse: incompatible types in comparison expression (different address spaces):
kernel/sched/sched.h:2460:9: sparse: struct task_struct [noderef] __rcu *
kernel/sched/sched.h:2460:9: sparse: struct task_struct *
kernel/sched/sched.h:2239:25: sparse: sparse: incompatible types in comparison expression (different address spaces):
kernel/sched/sched.h:2239:25: sparse: struct task_struct [noderef] __rcu *
kernel/sched/sched.h:2239:25: sparse: struct task_struct *
kernel/sched/sched.h:2250:26: sparse: sparse: incompatible types in comparison expression (different address spaces):
kernel/sched/sched.h:2250:26: sparse: struct task_struct [noderef] __rcu *
kernel/sched/sched.h:2250:26: sparse: struct task_struct *
kernel/sched/sched.h:2250:26: sparse: sparse: incompatible types in comparison expression (different address spaces):
kernel/sched/sched.h:2250:26: sparse: struct task_struct [noderef] __rcu *
kernel/sched/sched.h:2250:26: sparse: struct task_struct *

vim +10562 kernel/sched/fair.c

3318544b721d30 Vincent Guittot 2019-10-22 10550
3318544b721d30 Vincent Guittot 2019-10-22 10551 /**
3318544b721d30 Vincent Guittot 2019-10-22 10552 * idle_cpu_without - would a given CPU be idle without p ?
3318544b721d30 Vincent Guittot 2019-10-22 10553 * @cpu: the processor on which idleness is tested.
3318544b721d30 Vincent Guittot 2019-10-22 10554 * @p: task which should be ignored.
3318544b721d30 Vincent Guittot 2019-10-22 10555 *
3318544b721d30 Vincent Guittot 2019-10-22 10556 * Return: 1 if the CPU would be idle. 0 otherwise.
3318544b721d30 Vincent Guittot 2019-10-22 10557 */
3318544b721d30 Vincent Guittot 2019-10-22 10558 static int idle_cpu_without(int cpu, struct task_struct *p)
3318544b721d30 Vincent Guittot 2019-10-22 10559 {
3318544b721d30 Vincent Guittot 2019-10-22 10560 struct rq *rq = cpu_rq(cpu);
3318544b721d30 Vincent Guittot 2019-10-22 10561
3318544b721d30 Vincent Guittot 2019-10-22 @10562 if (rq->curr != rq->idle && rq->curr != p)
3318544b721d30 Vincent Guittot 2019-10-22 10563 return 0;
3318544b721d30 Vincent Guittot 2019-10-22 10564
3318544b721d30 Vincent Guittot 2019-10-22 10565 /*
3318544b721d30 Vincent Guittot 2019-10-22 10566 * rq->nr_running can't be used but an updated version without the
3318544b721d30 Vincent Guittot 2019-10-22 10567 * impact of p on cpu must be used instead. The updated nr_running
3318544b721d30 Vincent Guittot 2019-10-22 10568 * be computed and tested before calling idle_cpu_without().
3318544b721d30 Vincent Guittot 2019-10-22 10569 */
3318544b721d30 Vincent Guittot 2019-10-22 10570
126c2092e5c8b2 Peter Zijlstra 2020-05-26 10571 if (rq->ttwu_pending)
3318544b721d30 Vincent Guittot 2019-10-22 10572 return 0;
3318544b721d30 Vincent Guittot 2019-10-22 10573
3318544b721d30 Vincent Guittot 2019-10-22 10574 return 1;
3318544b721d30 Vincent Guittot 2019-10-22 10575 }
3318544b721d30 Vincent Guittot 2019-10-22 10576

:::::: The code at line 10562 was first introduced by commit
:::::: 3318544b721d3072fdd1f85ee0f1f214c0b211ee sched/fair: Fix rework of find_idlest_group()

:::::: TO: Vincent Guittot <vincent.guittot@xxxxxxxxxx>
:::::: CC: Ingo Molnar <mingo@xxxxxxxxxx>

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