kernel/sched/deadline.c:2703:23: sparse: sparse: incorrect type in argument 1 (different address spaces)

From: kernel test robot

Date: Mon Feb 16 2026 - 01:31: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-063-20260216 (https://download.01.org/0day-ci/archive/20260216/202602161456.uWPO6NT7-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/202602161456.uWPO6NT7-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/202602161456.uWPO6NT7-lkp@xxxxxxxxx/

sparse warnings: (new ones prefixed by >>)
kernel/sched/build_policy.c: note: in included file:
kernel/sched/rt.c:2336:25: sparse: sparse: incompatible types in comparison expression (different address spaces):
kernel/sched/rt.c:2336:25: sparse: struct task_struct *
kernel/sched/rt.c:2336:25: sparse: struct task_struct [noderef] __rcu *
kernel/sched/rt.c:991: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:991:39: sparse: expected struct task_struct *donor
kernel/sched/rt.c:991:39: sparse: got struct task_struct [noderef] __rcu *donor
kernel/sched/rt.c:1529: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:1529:31: sparse: expected struct task_struct *p
kernel/sched/rt.c:1529:31: sparse: got struct task_struct [noderef] __rcu *curr
kernel/sched/rt.c:1849: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:1849:9: sparse: expected struct sched_domain *[assigned] sd
kernel/sched/rt.c:1849:9: sparse: got struct sched_domain [noderef] __rcu *parent
kernel/sched/rt.c:1549: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:1549:14: sparse: expected struct task_struct *curr
kernel/sched/rt.c:1549:14: sparse: got struct task_struct [noderef] __rcu *
kernel/sched/rt.c:1550: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:1550:15: sparse: expected struct task_struct *donor
kernel/sched/rt.c:1550:15: sparse: got struct task_struct [noderef] __rcu *
kernel/sched/rt.c:1611: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:1611:45: sparse: expected struct task_struct *p
kernel/sched/rt.c:1611:45: sparse: got struct task_struct [noderef] __rcu *donor
kernel/sched/rt.c:1654: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:1654:39: sparse: expected struct task_struct *donor
kernel/sched/rt.c:1654:39: sparse: got struct task_struct [noderef] __rcu *donor
kernel/sched/rt.c:1674: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:1674:64: sparse: expected struct task_struct *tsk
kernel/sched/rt.c:1674:64: sparse: got struct task_struct [noderef] __rcu *curr
kernel/sched/rt.c:2018: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:2018:40: sparse: expected struct task_struct *task
kernel/sched/rt.c:2018:40: sparse: got struct task_struct [noderef] __rcu *curr
kernel/sched/rt.c:2041:13: sparse: sparse: incompatible types in comparison expression (different address spaces):
kernel/sched/rt.c:2041:13: sparse: struct task_struct *
kernel/sched/rt.c:2041:13: sparse: struct task_struct [noderef] __rcu *
kernel/sched/rt.c:2387: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:2387:54: sparse: expected struct task_struct *tsk
kernel/sched/rt.c:2387:54: sparse: got struct task_struct [noderef] __rcu *curr
kernel/sched/rt.c:2389: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:2389:40: sparse: expected struct task_struct *p
kernel/sched/rt.c:2389:40: sparse: got struct task_struct [noderef] __rcu *donor
kernel/sched/rt.c:2389: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:2389:62: sparse: expected struct task_struct *p
kernel/sched/rt.c:2389:62: sparse: got struct task_struct [noderef] __rcu *donor
kernel/sched/build_policy.c: note: in included file:
>> kernel/sched/deadline.c:2703: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:2703:23: sparse: expected struct task_struct *p
kernel/sched/deadline.c:2703:23: sparse: got struct task_struct [noderef] __rcu *donor
kernel/sched/deadline.c:2713:13: sparse: sparse: incompatible types in comparison expression (different address spaces):
kernel/sched/deadline.c:2713:13: sparse: struct task_struct *
kernel/sched/deadline.c:2713:13: sparse: struct task_struct [noderef] __rcu *
kernel/sched/deadline.c:2819:25: sparse: sparse: incompatible types in comparison expression (different address spaces):
kernel/sched/deadline.c:2819:25: sparse: struct task_struct *
kernel/sched/deadline.c:2819:25: sparse: struct task_struct [noderef] __rcu *
kernel/sched/deadline.c:2342: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:2342:42: sparse: expected struct sched_dl_entity const *b
kernel/sched/deadline.c:2342:42: sparse: got struct sched_dl_entity [noderef] __rcu *
kernel/sched/deadline.c:2353: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:2353:38: sparse: expected struct task_struct *tsk
kernel/sched/deadline.c:2353:38: sparse: got struct task_struct [noderef] __rcu *curr
kernel/sched/deadline.c:1242: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:1242:39: sparse: expected struct task_struct *p
kernel/sched/deadline.c:1242:39: sparse: got struct task_struct [noderef] __rcu *curr
kernel/sched/deadline.c:1242: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:1242:85: sparse: expected struct sched_dl_entity const *b
kernel/sched/deadline.c:1242:85: sparse: got struct sched_dl_entity [noderef] __rcu *
kernel/sched/deadline.c:1342: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:1342:23: sparse: expected struct task_struct *p
kernel/sched/deadline.c:1342:23: sparse: got struct task_struct [noderef] __rcu *donor
kernel/sched/deadline.c:1651: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:1651:31: sparse: expected struct task_struct *p
kernel/sched/deadline.c:1651:31: sparse: got struct task_struct [noderef] __rcu *curr
kernel/sched/deadline.c:1651: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:1651:70: sparse: expected struct sched_dl_entity const *b
kernel/sched/deadline.c:1651:70: sparse: got struct sched_dl_entity [noderef] __rcu *
kernel/sched/deadline.c:1739: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:1739:39: sparse: expected struct task_struct *donor
kernel/sched/deadline.c:1739:39: sparse: got struct task_struct [noderef] __rcu *donor
kernel/sched/deadline.c:2564: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:2564:9: sparse: expected struct sched_domain *[assigned] sd
kernel/sched/deadline.c:2564:9: sparse: got struct sched_domain [noderef] __rcu *parent
kernel/sched/deadline.c:2226: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:2226:14: sparse: expected struct task_struct *curr
kernel/sched/deadline.c:2226:14: sparse: got struct task_struct [noderef] __rcu *
kernel/sched/deadline.c:2227: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:2227:15: sparse: expected struct task_struct *donor
kernel/sched/deadline.c:2227:15: sparse: got struct task_struct [noderef] __rcu *
kernel/sched/deadline.c:2303: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:2303:43: sparse: expected struct task_struct *p
kernel/sched/deadline.c:2303:43: sparse: got struct task_struct [noderef] __rcu *donor
kernel/sched/deadline.c:2864: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:2864:38: sparse: expected struct task_struct *tsk
kernel/sched/deadline.c:2864:38: sparse: got struct task_struct [noderef] __rcu *curr
kernel/sched/deadline.c:2866: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:2866:23: sparse: expected struct task_struct *p
kernel/sched/deadline.c:2866:23: sparse: got struct task_struct [noderef] __rcu *donor
kernel/sched/deadline.c:2868: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:2868:44: sparse: expected struct sched_dl_entity const *b
kernel/sched/deadline.c:2868:44: sparse: got struct sched_dl_entity [noderef] __rcu *
kernel/sched/deadline.c:3043:23: sparse: sparse: incompatible types in comparison expression (different address spaces):
kernel/sched/deadline.c:3043:23: sparse: struct task_struct [noderef] __rcu *
kernel/sched/deadline.c:3043:23: sparse: struct task_struct *
kernel/sched/deadline.c:3092: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/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:2276:25: sparse: sparse: incompatible types in comparison expression (different address spaces):
kernel/sched/sched.h:2276:25: sparse: struct task_struct [noderef] __rcu *
kernel/sched/sched.h:2276:25: sparse: struct task_struct *
kernel/sched/sched.h:2276:25: sparse: sparse: incompatible types in comparison expression (different address spaces):
kernel/sched/sched.h:2276:25: sparse: struct task_struct [noderef] __rcu *
kernel/sched/sched.h:2276:25: 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:2276:25: sparse: sparse: incompatible types in comparison expression (different address spaces):
kernel/sched/sched.h:2276:25: sparse: struct task_struct [noderef] __rcu *
kernel/sched/sched.h:2276:25: 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:2276:25: sparse: sparse: incompatible types in comparison expression (different address spaces):
kernel/sched/sched.h:2276:25: sparse: struct task_struct [noderef] __rcu *
kernel/sched/sched.h:2276:25: sparse: struct task_struct *
kernel/sched/sched.h:2276:25: sparse: sparse: incompatible types in comparison expression (different address spaces):
kernel/sched/sched.h:2276:25: sparse: struct task_struct [noderef] __rcu *
kernel/sched/sched.h:2276:25: 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 *
kernel/sched/sched.h:2473:9: sparse: sparse: incompatible types in comparison expression (different address spaces):
kernel/sched/sched.h:2473:9: sparse: struct task_struct [noderef] __rcu *
kernel/sched/sched.h:2473: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:2473:9: sparse: sparse: incompatible types in comparison expression (different address spaces):
kernel/sched/sched.h:2473:9: sparse: struct task_struct [noderef] __rcu *
kernel/sched/sched.h:2473:9: sparse: struct task_struct *
kernel/sched/build_policy.c: note: in included file:
kernel/sched/syscalls.c:1336:6: sparse: sparse: context imbalance in 'sched_getaffinity' - different lock contexts for basic block

vim +2703 kernel/sched/deadline.c

2681
2682 /*
2683 * See if the non running -deadline tasks on this rq
2684 * can be sent to some other CPU where they can preempt
2685 * and start executing.
2686 */
2687 static int push_dl_task(struct rq *rq)
2688 {
2689 struct task_struct *next_task;
2690 struct rq *later_rq;
2691 int ret = 0;
2692
2693 next_task = pick_next_pushable_dl_task(rq);
2694 if (!next_task)
2695 return 0;
2696
2697 retry:
2698 /*
2699 * If next_task preempts rq->curr, and rq->curr
2700 * can move away, it makes sense to just reschedule
2701 * without going further in pushing next_task.
2702 */
> 2703 if (dl_task(rq->donor) &&
2704 dl_time_before(next_task->dl.deadline, rq->donor->dl.deadline) &&
2705 rq->curr->nr_cpus_allowed > 1) {
2706 resched_curr(rq);
2707 return 0;
2708 }
2709
2710 if (is_migration_disabled(next_task))
2711 return 0;
2712
2713 if (WARN_ON(next_task == rq->curr))
2714 return 0;
2715
2716 /* We might release rq lock */
2717 get_task_struct(next_task);
2718
2719 /* Will lock the rq it'll find */
2720 later_rq = find_lock_later_rq(next_task, rq);
2721 if (!later_rq) {
2722 struct task_struct *task;
2723
2724 /*
2725 * We must check all this again, since
2726 * find_lock_later_rq releases rq->lock and it is
2727 * then possible that next_task has migrated.
2728 */
2729 task = pick_next_pushable_dl_task(rq);
2730 if (task == next_task) {
2731 /*
2732 * The task is still there. We don't try
2733 * again, some other CPU will pull it when ready.
2734 */
2735 goto out;
2736 }
2737
2738 if (!task)
2739 /* No more tasks */
2740 goto out;
2741
2742 put_task_struct(next_task);
2743 next_task = task;
2744 goto retry;
2745 }
2746
2747 move_queued_task_locked(rq, later_rq, next_task);
2748 ret = 1;
2749
2750 resched_curr(later_rq);
2751
2752 double_unlock_balance(rq, later_rq);
2753
2754 out:
2755 put_task_struct(next_task);
2756
2757 return ret;
2758 }
2759

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