[tip:sched/core 56/56] kernel/sched/fair.c:6905:44: sparse: sparse: incorrect type in argument 1 (different address spaces)
From: kernel test robot
Date: Sat Jun 06 2026 - 14:28:59 EST
tree: https://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git sched/core
head: f666241e6bd5d9a494beca982e1953208dce531c
commit: f666241e6bd5d9a494beca982e1953208dce531c [56/56] sched/fair: Unify cfs_rq throttling via account_cfs_rq_runtime()
config: arc-randconfig-r123-20260606 (https://download.01.org/0day-ci/archive/20260607/202606070217.eZYR9hdn-lkp@xxxxxxxxx/config)
compiler: arc-linux-gcc (GCC) 8.5.0
sparse: v0.6.5-rc1
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260607/202606070217.eZYR9hdn-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/202606070217.eZYR9hdn-lkp@xxxxxxxxx/
sparse warnings: (new ones prefixed by >>)
kernel/sched/fair.c:1367: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:1367:49: sparse: expected struct task_struct *running
kernel/sched/fair.c:1367:49: sparse: got struct task_struct [noderef] __rcu *curr
kernel/sched/fair.c:1979: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:1979:33: sparse: expected struct sched_entity *se
kernel/sched/fair.c:1979:33: sparse: got struct sched_entity [noderef] __rcu *
kernel/sched/fair.c:2035: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:2035:34: sparse: expected struct sched_entity const *se
kernel/sched/fair.c:2035:34: sparse: got struct sched_entity [noderef] __rcu *
kernel/sched/fair.c:14397: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:14397:9: sparse: expected struct sched_domain *[assigned] sd
kernel/sched/fair.c:14397:9: sparse: got struct sched_domain [noderef] __rcu *parent
>> kernel/sched/fair.c:6905:44: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct task_struct *p @@ got struct task_struct [noderef] __rcu *donor @@
kernel/sched/fair.c:6905:44: sparse: expected struct task_struct *p
kernel/sched/fair.c:6905:44: sparse: got struct task_struct [noderef] __rcu *donor
kernel/sched/fair.c:6963:22: sparse: sparse: incompatible types in comparison expression (different address spaces):
kernel/sched/fair.c:6963:22: sparse: struct task_struct [noderef] __rcu *
kernel/sched/fair.c:6963:22: sparse: struct task_struct *
kernel/sched/fair.c:9373: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:9373:20: sparse: expected struct sched_domain *[assigned] sd
kernel/sched/fair.c:9373:20: sparse: got struct sched_domain [noderef] __rcu *parent
kernel/sched/fair.c:9568: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:9568:9: sparse: expected struct sched_domain *[assigned] tmp
kernel/sched/fair.c:9568:9: sparse: got struct sched_domain [noderef] __rcu *parent
kernel/sched/fair.c:9766: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:9766:39: sparse: expected struct task_struct *donor
kernel/sched/fair.c:9766:39: sparse: got struct task_struct [noderef] __rcu *donor
kernel/sched/fair.c:9799: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:9799:37: sparse: expected struct task_struct *tsk
kernel/sched/fair.c:9799:37: sparse: got struct task_struct [noderef] __rcu *curr
kernel/sched/fair.c:10004:38: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected struct task_struct *curr @@ got struct task_struct [noderef] __rcu *donor @@
kernel/sched/fair.c:10004:38: sparse: expected struct task_struct *curr
kernel/sched/fair.c:10004:38: sparse: got struct task_struct [noderef] __rcu *donor
kernel/sched/fair.c:11349: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:11349:40: sparse: expected struct sched_domain *child
kernel/sched/fair.c:11349:40: sparse: got struct sched_domain [noderef] __rcu *child
kernel/sched/fair.c:12115:22: sparse: sparse: incompatible types in comparison expression (different address spaces):
kernel/sched/fair.c:12115:22: sparse: struct task_struct [noderef] __rcu *
kernel/sched/fair.c:12115:22: sparse: struct task_struct *
kernel/sched/fair.c:13633: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:13633:9: sparse: expected struct sched_domain *[assigned] sd
kernel/sched/fair.c:13633:9: sparse: got struct sched_domain [noderef] __rcu *parent
kernel/sched/fair.c:13264: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:13264:44: sparse: expected struct sched_domain *sd_parent
kernel/sched/fair.c:13264:44: sparse: got struct sched_domain [noderef] __rcu *parent
kernel/sched/fair.c:13769: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:13769:9: sparse: expected struct sched_domain *[assigned] sd
kernel/sched/fair.c:13769:9: sparse: got struct sched_domain [noderef] __rcu *parent
kernel/sched/fair.c: note: in included file:
kernel/sched/sched.h:2462:26: sparse: sparse: incompatible types in comparison expression (different address spaces):
kernel/sched/sched.h:2462:26: sparse: struct task_struct [noderef] __rcu *
kernel/sched/sched.h:2462:26: sparse: struct task_struct *
kernel/sched/sched.h:1423:25: sparse: sparse: incompatible types in comparison expression (different address spaces):
kernel/sched/sched.h:1423:25: sparse: struct task_struct [noderef] __rcu *
kernel/sched/sched.h:1423:25: sparse: struct task_struct *
kernel/sched/sched.h:1423:25: sparse: sparse: incompatible types in comparison expression (different address spaces):
kernel/sched/sched.h:1423:25: sparse: struct task_struct [noderef] __rcu *
kernel/sched/sched.h:1423:25: sparse: struct task_struct *
kernel/sched/sched.h:1423:25: sparse: sparse: incompatible types in comparison expression (different address spaces):
kernel/sched/sched.h:1423:25: sparse: struct task_struct [noderef] __rcu *
kernel/sched/sched.h:1423:25: sparse: struct task_struct *
kernel/sched/sched.h:1423:25: sparse: sparse: incompatible types in comparison expression (different address spaces):
kernel/sched/sched.h:1423:25: sparse: struct task_struct [noderef] __rcu *
kernel/sched/sched.h:1423:25: sparse: struct task_struct *
kernel/sched/sched.h:1423:25: sparse: sparse: incompatible types in comparison expression (different address spaces):
kernel/sched/sched.h:1423:25: sparse: struct task_struct [noderef] __rcu *
kernel/sched/sched.h:1423:25: sparse: struct task_struct *
kernel/sched/sched.h:1423:25: sparse: sparse: incompatible types in comparison expression (different address spaces):
kernel/sched/sched.h:1423:25: sparse: struct task_struct [noderef] __rcu *
kernel/sched/sched.h:1423:25: sparse: struct task_struct *
kernel/sched/sched.h:1423:25: sparse: sparse: incompatible types in comparison expression (different address spaces):
kernel/sched/sched.h:1423:25: sparse: struct task_struct [noderef] __rcu *
kernel/sched/sched.h:1423:25: sparse: struct task_struct *
kernel/sched/sched.h:2462:26: sparse: sparse: incompatible types in comparison expression (different address spaces):
kernel/sched/sched.h:2462:26: sparse: struct task_struct [noderef] __rcu *
kernel/sched/sched.h:2462:26: sparse: struct task_struct *
kernel/sched/sched.h:2451:25: sparse: sparse: incompatible types in comparison expression (different address spaces):
kernel/sched/sched.h:2451:25: sparse: struct task_struct [noderef] __rcu *
kernel/sched/sched.h:2451:25: sparse: struct task_struct *
kernel/sched/sched.h:2462:26: sparse: sparse: incompatible types in comparison expression (different address spaces):
kernel/sched/sched.h:2462:26: sparse: struct task_struct [noderef] __rcu *
kernel/sched/sched.h:2462:26: sparse: struct task_struct *
kernel/sched/fair.c: note: in included file (through arch/arc/include/asm/irqflags.h, include/linux/irqflags.h, arch/arc/include/asm/smp.h, arch/arc/include/asm/cmpxchg.h, ...):
arch/arc/include/asm/irqflags-arcv2.h:80:31: sparse: sparse: undefined identifier '__builtin_arc_lr'
arch/arc/include/asm/irqflags-arcv2.h:83:17: sparse: sparse: undefined identifier '__builtin_arc_sr'
kernel/sched/fair.c: note: in included file:
kernel/sched/sched.h:2462:26: sparse: sparse: incompatible types in comparison expression (different address spaces):
kernel/sched/sched.h:2462:26: sparse: struct task_struct [noderef] __rcu *
kernel/sched/sched.h:2462:26: sparse: struct task_struct *
kernel/sched/sched.h:2462:26: sparse: sparse: incompatible types in comparison expression (different address spaces):
kernel/sched/sched.h:2462:26: sparse: struct task_struct [noderef] __rcu *
kernel/sched/sched.h:2462:26: sparse: struct task_struct *
vim +6905 kernel/sched/fair.c
6844
6845 static bool throttle_cfs_rq(struct cfs_rq *cfs_rq)
6846 {
6847 struct cfs_bandwidth *cfs_b = tg_cfs_bandwidth(cfs_rq->tg);
6848 struct sched_entity *curr = cfs_rq->curr;
6849 struct rq *rq = rq_of(cfs_rq);
6850
6851 scoped_guard(raw_spinlock, &cfs_b->lock) {
6852 u64 target_runtime = 1;
6853
6854 /*
6855 * If cfs_rq->curr is still runnable, we are here from an
6856 * update_curr(). Request sysctl_sched_cfs_bandwidth_slice
6857 * worth of bandwidth to continue running.
6858 *
6859 * If the curr is not runnable, just request enough bandwidth
6860 * to be runnable next time the pick selects this cfs_rq.
6861 */
6862 if (curr && curr->on_rq)
6863 target_runtime = sched_cfs_bandwidth_slice();
6864
6865 /*
6866 * Check if We have raced with bandwidth becoming available. If
6867 * we actually throttled the timer might not unthrottle us for
6868 * an entire period. We additionally needed to make sure that
6869 * any subsequent check_cfs_rq_runtime calls agree not to
6870 * throttle us, as we may commit to do cfs put_prev+pick_next,
6871 * so we ask for 1ns of runtime rather than just check cfs_b.
6872 *
6873 * This will start the period timer if necessary.
6874 */
6875 if (__assign_cfs_rq_runtime(cfs_b, cfs_rq, target_runtime))
6876 return false;
6877
6878 /*
6879 * No bandwidth available; Add ourselves on the list to be
6880 * unthrottled later.
6881 */
6882 list_add_tail_rcu(&cfs_rq->throttled_list,
6883 &cfs_b->throttled_cfs_rq);
6884 }
6885
6886 /* freeze hierarchy runnable averages while throttled */
6887 scoped_guard(rcu)
6888 walk_tg_tree_from(cfs_rq->tg, tg_throttle_down, tg_nop, (void *)rq);
6889
6890 /*
6891 * Note: distribution will already see us throttled via the
6892 * throttled-list. rq->lock protects completion.
6893 */
6894 cfs_rq->throttled = 1;
6895 WARN_ON_ONCE(cfs_rq->throttled_clock);
6896
6897 /*
6898 * If current hierarchy was throttled, add throttle work to the
6899 * current donor. In case of proxy-execution, the execution
6900 * context cannot exit to the userspace while holding a mutex
6901 * and the rule of throttle deferral to only throttle the
6902 * throttled context at exit to userspace is still preserved.
6903 */
6904 if (curr && curr->on_rq)
> 6905 task_throttle_setup_work(rq->donor);
6906
6907 return true;
6908 }
6909
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki