Messages in this thread |  | | Date | Mon, 25 Apr 2022 07:27:12 +0800 | From | kernel test robot <> | Subject | kernel/sched/core.c:6890:43: sparse: sparse: incorrect type in initializer (different address spaces) |
| |
tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master head: 42740a2ff5d3f2cc0c73876dfb37ed0b88d926fd commit: 2558aacff8586699bcd248b406febb28b0a25de2 sched/hotplug: Ensure only per-cpu kthreads run during hotplug date: 1 year, 5 months ago config: x86_64-randconfig-s022 (https://download.01.org/0day-ci/archive/20220425/202204250740.9o62b5uY-lkp@intel.com/config) compiler: gcc-11 (Debian 11.2.0-20) 11.2.0 reproduce: # apt-get install sparse # sparse version: v0.6.4-dirty # https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=2558aacff8586699bcd248b406febb28b0a25de2 git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git git fetch --no-tags linus master git checkout 2558aacff8586699bcd248b406febb28b0a25de2 # save the config file mkdir build_dir && cp config build_dir/.config make W=1 C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' O=build_dir ARCH=x86_64 SHELL=/bin/bash
If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot <lkp@intel.com>
sparse warnings: (new ones prefixed by >>) kernel/sched/core.c:611:38: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected struct task_struct *curr @@ got struct task_struct [noderef] __rcu *curr @@ kernel/sched/core.c:611:38: sparse: expected struct task_struct *curr kernel/sched/core.c:611:38: sparse: got struct task_struct [noderef] __rcu *curr kernel/sched/core.c:666: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/core.c:666:9: sparse: expected struct sched_domain *[assigned] sd kernel/sched/core.c:666:9: sparse: got struct sched_domain [noderef] __rcu *parent kernel/sched/core.c:1693:33: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct task_struct *p @@ got struct task_struct [noderef] __rcu *curr @@ kernel/sched/core.c:1693:33: sparse: expected struct task_struct *p kernel/sched/core.c:1693:33: sparse: got struct task_struct [noderef] __rcu *curr kernel/sched/core.c:1693:68: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct task_struct *tsk @@ got struct task_struct [noderef] __rcu *curr @@ kernel/sched/core.c:1693:68: sparse: expected struct task_struct *tsk kernel/sched/core.c:1693:68: sparse: got struct task_struct [noderef] __rcu *curr kernel/sched/core.c:2435:17: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected struct sched_domain *[assigned] sd @@ got struct sched_domain [noderef] __rcu *parent @@ kernel/sched/core.c:2435:17: sparse: expected struct sched_domain *[assigned] sd kernel/sched/core.c:2435:17: sparse: got struct sched_domain [noderef] __rcu *parent kernel/sched/core.c:2627:36: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct task_struct const *p @@ got struct task_struct [noderef] __rcu *curr @@ kernel/sched/core.c:2627:36: sparse: expected struct task_struct const *p kernel/sched/core.c:2627:36: sparse: got struct task_struct [noderef] __rcu *curr >> kernel/sched/core.c:6890:43: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected struct task_struct *push_task @@ got struct task_struct [noderef] __rcu *curr @@ kernel/sched/core.c:6890:43: sparse: expected struct task_struct *push_task kernel/sched/core.c:6890:43: sparse: got struct task_struct [noderef] __rcu *curr kernel/sched/core.c:4030:38: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected struct task_struct *curr @@ got struct task_struct [noderef] __rcu *curr @@ kernel/sched/core.c:4030:38: sparse: expected struct task_struct *curr kernel/sched/core.c:4030:38: sparse: got struct task_struct [noderef] __rcu *curr kernel/sched/core.c:4115:14: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected struct task_struct *curr @@ got struct task_struct [noderef] __rcu *curr @@ kernel/sched/core.c:4115:14: sparse: expected struct task_struct *curr kernel/sched/core.c:4115:14: sparse: got struct task_struct [noderef] __rcu *curr kernel/sched/core.c:4463:14: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected struct task_struct *prev @@ got struct task_struct [noderef] __rcu *curr @@ kernel/sched/core.c:4463:14: sparse: expected struct task_struct *prev kernel/sched/core.c:4463:14: sparse: got struct task_struct [noderef] __rcu *curr kernel/sched/core.c:4926:17: sparse: sparse: incompatible types in comparison expression (different address spaces): kernel/sched/core.c:4926:17: sparse: struct task_struct * kernel/sched/core.c:4926:17: sparse: struct task_struct [noderef] __rcu * kernel/sched/core.c:5128:22: sparse: sparse: incompatible types in comparison expression (different address spaces): kernel/sched/core.c:5128:22: sparse: struct task_struct [noderef] __rcu * kernel/sched/core.c:5128:22: sparse: struct task_struct * kernel/sched/core.c:8578:25: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct task_struct *p @@ got struct task_struct [noderef] __rcu *curr @@ kernel/sched/core.c:8578:25: sparse: expected struct task_struct *p kernel/sched/core.c:8578:25: sparse: got struct task_struct [noderef] __rcu *curr kernel/sched/core.c: note: in included file: kernel/sched/pelt.h:85:13: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct task_struct const *p @@ got struct task_struct [noderef] __rcu *curr @@ kernel/sched/pelt.h:85:13: sparse: expected struct task_struct const *p kernel/sched/pelt.h:85:13: sparse: got struct task_struct [noderef] __rcu *curr kernel/sched/core.c:1684:33: sparse: sparse: dereference of noderef expression kernel/sched/core.c:1685:19: sparse: sparse: dereference of noderef expression kernel/sched/core.c:1686:37: sparse: sparse: dereference of noderef expression kernel/sched/core.c: note: in included file: kernel/sched/sched.h:1703:25: sparse: sparse: incompatible types in comparison expression (different address spaces): kernel/sched/sched.h:1703:25: sparse: struct task_struct [noderef] __rcu * kernel/sched/sched.h:1703:25: sparse: struct task_struct * kernel/sched/sched.h:1848:9: sparse: sparse: incompatible types in comparison expression (different address spaces): kernel/sched/sched.h:1848:9: sparse: struct task_struct [noderef] __rcu * kernel/sched/sched.h:1848:9: sparse: struct task_struct * kernel/sched/sched.h:1854:9: sparse: sparse: incompatible types in comparison expression (different address spaces): kernel/sched/sched.h:1854:9: sparse: struct task_struct [noderef] __rcu * kernel/sched/sched.h:1854:9: sparse: struct task_struct * kernel/sched/core.c:1659:38: sparse: sparse: incompatible types in comparison expression (different address spaces): kernel/sched/core.c:1659:38: sparse: struct task_struct [noderef] __rcu * kernel/sched/core.c:1659:38: sparse: struct task_struct const * kernel/sched/sched.h:1703:25: sparse: sparse: incompatible types in comparison expression (different address spaces): kernel/sched/sched.h:1703:25: sparse: struct task_struct [noderef] __rcu * kernel/sched/sched.h:1703:25: sparse: struct task_struct * kernel/sched/sched.h:1848:9: sparse: sparse: incompatible types in comparison expression (different address spaces): kernel/sched/sched.h:1848:9: sparse: struct task_struct [noderef] __rcu * kernel/sched/sched.h:1848:9: sparse: struct task_struct * kernel/sched/sched.h:1848:9: sparse: sparse: incompatible types in comparison expression (different address spaces): kernel/sched/sched.h:1848:9: sparse: struct task_struct [noderef] __rcu * kernel/sched/sched.h:1848:9: sparse: struct task_struct * kernel/sched/sched.h:1703:25: sparse: sparse: incompatible types in comparison expression (different address spaces): kernel/sched/sched.h:1703:25: sparse: struct task_struct [noderef] __rcu * kernel/sched/sched.h:1703:25: sparse: struct task_struct * kernel/sched/sched.h:1848:9: sparse: sparse: incompatible types in comparison expression (different address spaces): kernel/sched/sched.h:1848:9: sparse: struct task_struct [noderef] __rcu * kernel/sched/sched.h:1848:9: sparse: struct task_struct * kernel/sched/sched.h:1854:9: sparse: sparse: incompatible types in comparison expression (different address spaces): kernel/sched/sched.h:1854:9: sparse: struct task_struct [noderef] __rcu * kernel/sched/sched.h:1854:9: sparse: struct task_struct * kernel/sched/sched.h:1703:25: sparse: sparse: incompatible types in comparison expression (different address spaces): kernel/sched/sched.h:1703:25: sparse: struct task_struct [noderef] __rcu * kernel/sched/sched.h:1703:25: sparse: struct task_struct * kernel/sched/sched.h:1848:9: sparse: sparse: incompatible types in comparison expression (different address spaces): kernel/sched/sched.h:1848:9: sparse: struct task_struct [noderef] __rcu * kernel/sched/sched.h:1848:9: sparse: struct task_struct * kernel/sched/sched.h:1854:9: sparse: sparse: incompatible types in comparison expression (different address spaces): kernel/sched/sched.h:1854:9: sparse: struct task_struct [noderef] __rcu * kernel/sched/sched.h:1854:9: sparse: struct task_struct * kernel/sched/sched.h:1703:25: sparse: sparse: incompatible types in comparison expression (different address spaces): kernel/sched/sched.h:1703:25: sparse: struct task_struct [noderef] __rcu * kernel/sched/sched.h:1703:25: sparse: struct task_struct * kernel/sched/sched.h:1848:9: sparse: sparse: incompatible types in comparison expression (different address spaces): kernel/sched/sched.h:1848:9: sparse: struct task_struct [noderef] __rcu * kernel/sched/sched.h:1848:9: sparse: struct task_struct * kernel/sched/sched.h:1854:9: sparse: sparse: incompatible types in comparison expression (different address spaces): kernel/sched/sched.h:1854:9: sparse: struct task_struct [noderef] __rcu * kernel/sched/sched.h:1854:9: sparse: struct task_struct *
vim +6890 kernel/sched/core.c
6884 6885 /* 6886 * Ensure we only run per-cpu kthreads once the CPU goes !active. 6887 */ 6888 static void balance_push(struct rq *rq) 6889 { > 6890 struct task_struct *push_task = rq->curr; 6891 6892 lockdep_assert_held(&rq->lock); 6893 SCHED_WARN_ON(rq->cpu != smp_processor_id()); 6894 6895 /* 6896 * Both the cpu-hotplug and stop task are in this case and are 6897 * required to complete the hotplug process. 6898 */ 6899 if (is_per_cpu_kthread(push_task)) 6900 return; 6901 6902 get_task_struct(push_task); 6903 /* 6904 * Temporarily drop rq->lock such that we can wake-up the stop task. 6905 * Both preemption and IRQs are still disabled. 6906 */ 6907 raw_spin_unlock(&rq->lock); 6908 stop_one_cpu_nowait(rq->cpu, __balance_push_cpu_stop, push_task, 6909 this_cpu_ptr(&push_work)); 6910 /* 6911 * At this point need_resched() is true and we'll take the loop in 6912 * schedule(). The next pick is obviously going to be the stop task 6913 * which is_per_cpu_kthread() and will push this task away. 6914 */ 6915 raw_spin_lock(&rq->lock); 6916 } 6917
-- 0-DAY CI Kernel Test Service https://01.org/lkp
|  |