kernel/sched/rt.c:1571:45: sparse: sparse: incorrect type in argument 2 (different address spaces)

From: kernel test robot

Date: Thu Jun 11 2026 - 21:11:30 EST


tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: 9716c086c8e8b141d35aa61f2e96a2e83de212a7
commit: 15125a229abc2404a264ce493e64a9ffa7850f6e sched/smp: Use the SMP version of the RT scheduling class
date: 12 months ago
config: x86_64-randconfig-123-20260610 (https://download.01.org/0day-ci/archive/20260612/202606120900.a9u93sLd-lkp@xxxxxxxxx/config)
compiler: clang version 22.1.3 (https://github.com/llvm/llvm-project e9846648fd6183ee6d8cbdb4502213fcf902a211)
sparse: v0.6.5-rc1
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260612/202606120900.a9u93sLd-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: 15125a229abc ("sched/smp: Use the SMP version of the RT scheduling class")
| Reported-by: kernel test robot <lkp@xxxxxxxxx>
| Closes: https://lore.kernel.org/oe-kbuild-all/202606120900.a9u93sLd-lkp@xxxxxxxxx/

sparse warnings: (new ones prefixed by >>)
kernel/sched/build_policy.c: note: in included file:
kernel/sched/rt.c:838:70: sparse: sparse: incompatible types in comparison expression (different address spaces):
kernel/sched/rt.c:838:70: sparse: struct task_struct [noderef] __rcu *
kernel/sched/rt.c:838:70: sparse: struct task_struct *
kernel/sched/rt.c:2289:25: sparse: sparse: incompatible types in comparison expression (different address spaces):
kernel/sched/rt.c:2289:25: sparse: struct task_struct *
kernel/sched/rt.c:2289:25: sparse: struct task_struct [noderef] __rcu *
kernel/sched/rt.c:529:55: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected struct task_struct *donor @@ got struct task_struct [noderef] __rcu *donor @@
kernel/sched/rt.c:529:55: sparse: expected struct task_struct *donor
kernel/sched/rt.c:529:55: sparse: got struct task_struct [noderef] __rcu *donor
kernel/sched/rt.c:976:39: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected struct task_struct *donor @@ got struct task_struct [noderef] __rcu *donor @@
kernel/sched/rt.c:976:39: sparse: expected struct task_struct *donor
kernel/sched/rt.c:976:39: sparse: got struct task_struct [noderef] __rcu *donor
kernel/sched/rt.c:1490:31: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected struct task_struct *p @@ got struct task_struct [noderef] __rcu *curr @@
kernel/sched/rt.c:1490:31: sparse: expected struct task_struct *p
kernel/sched/rt.c:1490:31: sparse: got struct task_struct [noderef] __rcu *curr
kernel/sched/rt.c:1804: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/rt.c:1804:9: sparse: expected struct sched_domain *[assigned] sd
kernel/sched/rt.c:1804:9: sparse: got struct sched_domain [noderef] __rcu *parent
kernel/sched/rt.c:1509:14: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected struct task_struct *curr @@ got struct task_struct [noderef] __rcu * @@
kernel/sched/rt.c:1509:14: sparse: expected struct task_struct *curr
kernel/sched/rt.c:1509:14: sparse: got struct task_struct [noderef] __rcu *
kernel/sched/rt.c:1510:15: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected struct task_struct *donor @@ got struct task_struct [noderef] __rcu * @@
kernel/sched/rt.c:1510:15: sparse: expected struct task_struct *donor
kernel/sched/rt.c:1510:15: sparse: got struct task_struct [noderef] __rcu *
>> kernel/sched/rt.c:1571:45: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected struct task_struct *p @@ got struct task_struct [noderef] __rcu *donor @@
kernel/sched/rt.c:1571:45: sparse: expected struct task_struct *p
kernel/sched/rt.c:1571:45: sparse: got struct task_struct [noderef] __rcu *donor
kernel/sched/rt.c:1613:39: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected struct task_struct *donor @@ got struct task_struct [noderef] __rcu *donor @@
kernel/sched/rt.c:1613:39: sparse: expected struct task_struct *donor
kernel/sched/rt.c:1613:39: sparse: got struct task_struct [noderef] __rcu *donor
kernel/sched/rt.c:1632:64: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct task_struct *tsk @@ got struct task_struct [noderef] __rcu *curr @@
kernel/sched/rt.c:1632:64: sparse: expected struct task_struct *tsk
kernel/sched/rt.c:1632:64: sparse: got struct task_struct [noderef] __rcu *curr
kernel/sched/rt.c:1971:40: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct task_struct *task @@ got struct task_struct [noderef] __rcu *curr @@
kernel/sched/rt.c:1971:40: sparse: expected struct task_struct *task
kernel/sched/rt.c:1971:40: sparse: got struct task_struct [noderef] __rcu *curr
kernel/sched/rt.c:1994:13: sparse: sparse: incompatible types in comparison expression (different address spaces):
kernel/sched/rt.c:1994:13: sparse: struct task_struct *
kernel/sched/rt.c:1994:13: sparse: struct task_struct [noderef] __rcu *
kernel/sched/rt.c:2340:54: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct task_struct *tsk @@ got struct task_struct [noderef] __rcu *curr @@
kernel/sched/rt.c:2340:54: sparse: expected struct task_struct *tsk
kernel/sched/rt.c:2340:54: sparse: got struct task_struct [noderef] __rcu *curr
kernel/sched/rt.c:2342:40: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct task_struct *p @@ got struct task_struct [noderef] __rcu *donor @@
kernel/sched/rt.c:2342:40: sparse: expected struct task_struct *p
kernel/sched/rt.c:2342:40: sparse: got struct task_struct [noderef] __rcu *donor
kernel/sched/rt.c:2342:62: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct task_struct *p @@ got struct task_struct [noderef] __rcu *donor @@
kernel/sched/rt.c:2342:62: sparse: expected struct task_struct *p
kernel/sched/rt.c:2342:62: sparse: got struct task_struct [noderef] __rcu *donor
kernel/sched/build_policy.c: note: in included file:
kernel/sched/deadline.c:2634: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:2634:23: sparse: expected struct task_struct *p
kernel/sched/deadline.c:2634:23: sparse: got struct task_struct [noderef] __rcu *donor
kernel/sched/deadline.c:2644:13: sparse: sparse: incompatible types in comparison expression (different address spaces):
kernel/sched/deadline.c:2644:13: sparse: struct task_struct *
kernel/sched/deadline.c:2644:13: sparse: struct task_struct [noderef] __rcu *
kernel/sched/deadline.c:2750:25: sparse: sparse: incompatible types in comparison expression (different address spaces):
kernel/sched/deadline.c:2750:25: sparse: struct task_struct *
kernel/sched/deadline.c:2750:25: sparse: struct task_struct [noderef] __rcu *
kernel/sched/deadline.c:2278: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:2278:42: sparse: expected struct sched_dl_entity const *b
kernel/sched/deadline.c:2278:42: sparse: got struct sched_dl_entity [noderef] __rcu *
kernel/sched/deadline.c:2288: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:2288:38: sparse: expected struct task_struct *tsk
kernel/sched/deadline.c:2288:38: sparse: got struct task_struct [noderef] __rcu *curr
kernel/sched/deadline.c:1197: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:1197:39: sparse: expected struct task_struct *p
kernel/sched/deadline.c:1197:39: sparse: got struct task_struct [noderef] __rcu *curr
kernel/sched/deadline.c:1197: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:1197:85: sparse: expected struct sched_dl_entity const *b
kernel/sched/deadline.c:1197:85: sparse: got struct sched_dl_entity [noderef] __rcu *
kernel/sched/deadline.c:1295: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:1295:23: sparse: expected struct task_struct *p
kernel/sched/deadline.c:1295:23: sparse: got struct task_struct [noderef] __rcu *donor
kernel/sched/deadline.c:1604: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:1604:31: sparse: expected struct task_struct *p
kernel/sched/deadline.c:1604:31: sparse: got struct task_struct [noderef] __rcu *curr
kernel/sched/deadline.c:1604: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:1604:70: sparse: expected struct sched_dl_entity const *b
kernel/sched/deadline.c:1604:70: sparse: got struct sched_dl_entity [noderef] __rcu *
kernel/sched/deadline.c:1693: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:1693:39: sparse: expected struct task_struct *donor
kernel/sched/deadline.c:1693:39: sparse: got struct task_struct [noderef] __rcu *donor
kernel/sched/deadline.c:2495: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:2495:9: sparse: expected struct sched_domain *[assigned] sd
kernel/sched/deadline.c:2495:9: sparse: got struct sched_domain [noderef] __rcu *parent
kernel/sched/deadline.c:2164: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:2164:14: sparse: expected struct task_struct *curr
kernel/sched/deadline.c:2164:14: sparse: got struct task_struct [noderef] __rcu *
kernel/sched/deadline.c:2165: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:2165:15: sparse: expected struct task_struct *donor
kernel/sched/deadline.c:2165:15: sparse: got struct task_struct [noderef] __rcu *
kernel/sched/deadline.c:2240: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:2240:43: sparse: expected struct task_struct *p
kernel/sched/deadline.c:2240:43: sparse: got struct task_struct [noderef] __rcu *donor
kernel/sched/deadline.c:2795: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:2795:38: sparse: expected struct task_struct *tsk
kernel/sched/deadline.c:2795:38: sparse: got struct task_struct [noderef] __rcu *curr
kernel/sched/deadline.c:2797: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:2797:23: sparse: expected struct task_struct *p
kernel/sched/deadline.c:2797:23: sparse: got struct task_struct [noderef] __rcu *donor
kernel/sched/deadline.c:2799: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:2799:44: sparse: expected struct sched_dl_entity const *b
kernel/sched/deadline.c:2799:44: sparse: got struct sched_dl_entity [noderef] __rcu *
kernel/sched/deadline.c:2986:23: sparse: sparse: incompatible types in comparison expression (different address spaces):
kernel/sched/deadline.c:2986:23: sparse: struct task_struct [noderef] __rcu *
kernel/sched/deadline.c:2986:23: sparse: struct task_struct *
kernel/sched/build_policy.c: note: in included file:
kernel/sched/syscalls.c:206:22: sparse: sparse: incompatible types in comparison expression (different address spaces):
kernel/sched/syscalls.c:206:22: sparse: struct task_struct [noderef] __rcu *
kernel/sched/syscalls.c:206:22: sparse: struct task_struct *
kernel/sched/build_policy.c: note: in included file:
kernel/sched/sched.h:2235:25: sparse: sparse: incompatible types in comparison expression (different address spaces):
kernel/sched/sched.h:2235:25: sparse: struct task_struct [noderef] __rcu *
kernel/sched/sched.h:2235:25: sparse: struct task_struct *
kernel/sched/sched.h:2235:25: sparse: sparse: incompatible types in comparison expression (different address spaces):
kernel/sched/sched.h:2235:25: sparse: struct task_struct [noderef] __rcu *
kernel/sched/sched.h:2235:25: sparse: struct task_struct *
kernel/sched/sched.h:2235:25: sparse: sparse: incompatible types in comparison expression (different address spaces):
kernel/sched/sched.h:2235:25: sparse: struct task_struct [noderef] __rcu *
kernel/sched/sched.h:2235:25: sparse: struct task_struct *
kernel/sched/sched.h:2246:26: sparse: sparse: incompatible types in comparison expression (different address spaces):
kernel/sched/sched.h:2246:26: sparse: struct task_struct [noderef] __rcu *
kernel/sched/sched.h:2246:26: sparse: struct task_struct *
kernel/sched/sched.h:2235:25: sparse: sparse: incompatible types in comparison expression (different address spaces):
kernel/sched/sched.h:2235:25: sparse: struct task_struct [noderef] __rcu *

vim +1571 kernel/sched/rt.c

7ebefa8ceefed4 kernel/sched_rt.c Dmitry Adamushko 2008-07-01 1567
7ebefa8ceefed4 kernel/sched_rt.c Dmitry Adamushko 2008-07-01 1568 static void check_preempt_equal_prio(struct rq *rq, struct task_struct *p)
7ebefa8ceefed4 kernel/sched_rt.c Dmitry Adamushko 2008-07-01 1569 {
4b53a3412d6663 kernel/sched/rt.c Ingo Molnar 2017-02-05 1570 if (rq->curr->nr_cpus_allowed == 1 ||
af0c8b2bf67b25 kernel/sched/rt.c Peter Zijlstra 2024-10-09 @1571 !cpupri_find(&rq->rd->cpupri, rq->donor, NULL))
7ebefa8ceefed4 kernel/sched_rt.c Dmitry Adamushko 2008-07-01 1572 return;
7ebefa8ceefed4 kernel/sched_rt.c Dmitry Adamushko 2008-07-01 1573
308a623a40ce16 kernel/sched/rt.c Wanpeng Li 2014-10-31 1574 /*
308a623a40ce16 kernel/sched/rt.c Wanpeng Li 2014-10-31 1575 * p is migratable, so let's not schedule it and
308a623a40ce16 kernel/sched/rt.c Wanpeng Li 2014-10-31 1576 * see if it is pushed or pulled somewhere else.
308a623a40ce16 kernel/sched/rt.c Wanpeng Li 2014-10-31 1577 */
804d402fb6f648 kernel/sched/rt.c Qais Yousef 2019-10-09 1578 if (p->nr_cpus_allowed != 1 &&
a1bd02e1f28b19 kernel/sched/rt.c Qais Yousef 2020-03-02 1579 cpupri_find(&rq->rd->cpupri, p, NULL))
13b8bd0a5713bd kernel/sched_rt.c Rusty Russell 2009-03-25 1580 return;
24600ce89a819a kernel/sched_rt.c Rusty Russell 2008-11-25 1581
7ebefa8ceefed4 kernel/sched_rt.c Dmitry Adamushko 2008-07-01 1582 /*
97fb7a0a8944bd kernel/sched/rt.c Ingo Molnar 2018-03-03 1583 * There appear to be other CPUs that can accept
97fb7a0a8944bd kernel/sched/rt.c Ingo Molnar 2018-03-03 1584 * the current task but none can run 'p', so lets reschedule
97fb7a0a8944bd kernel/sched/rt.c Ingo Molnar 2018-03-03 1585 * to try and push the current task away:
7ebefa8ceefed4 kernel/sched_rt.c Dmitry Adamushko 2008-07-01 1586 */
7ebefa8ceefed4 kernel/sched_rt.c Dmitry Adamushko 2008-07-01 1587 requeue_task_rt(rq, p, 1);
8875125efe8402 kernel/sched/rt.c Kirill Tkhai 2014-06-29 1588 resched_curr(rq);
7ebefa8ceefed4 kernel/sched_rt.c Dmitry Adamushko 2008-07-01 1589 }
7ebefa8ceefed4 kernel/sched_rt.c Dmitry Adamushko 2008-07-01 1590

:::::: The code at line 1571 was first introduced by commit
:::::: af0c8b2bf67b25756f27644936e74fd9a6273bd2 sched: Split scheduler and execution contexts

:::::: TO: Peter Zijlstra <peterz@xxxxxxxxxxxxx>
:::::: CC: Peter Zijlstra <peterz@xxxxxxxxxxxxx>

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