mm/memcontrol.c:600:9: sparse: sparse: incorrect type in argument 1 (different address spaces)

From: kernel test robot
Date: Fri Aug 11 2023 - 20:21:03 EST


tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: 190bf7b14b0cf3df19c059061be032bd8994a597
commit: e575d401583273a7ac5dfb27520e41c821e81816 mm/memcontrol: Replace the PREEMPT_RT conditionals
date: 11 months ago
config: loongarch-randconfig-r072-20230811 (https://download.01.org/0day-ci/archive/20230812/202308120839.dVnfuv2t-lkp@xxxxxxxxx/config)
compiler: loongarch64-linux-gcc (GCC) 12.3.0
reproduce: (https://download.01.org/0day-ci/archive/20230812/202308120839.dVnfuv2t-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/202308120839.dVnfuv2t-lkp@xxxxxxxxx/

sparse warnings: (new ones prefixed by >>)
>> mm/memcontrol.c:600:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void *ptr @@ got unsigned int [noderef] __percpu * @@
mm/memcontrol.c:600:9: sparse: expected void *ptr
mm/memcontrol.c:600:9: sparse: got unsigned int [noderef] __percpu *
>> mm/memcontrol.c:600:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void *ptr @@ got unsigned int [noderef] __percpu * @@
mm/memcontrol.c:600:9: sparse: expected void *ptr
mm/memcontrol.c:600:9: sparse: got unsigned int [noderef] __percpu *
>> mm/memcontrol.c:600:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void *ptr @@ got unsigned int [noderef] __percpu * @@
mm/memcontrol.c:600:9: sparse: expected void *ptr
mm/memcontrol.c:600:9: sparse: got unsigned int [noderef] __percpu *
>> mm/memcontrol.c:600:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void *ptr @@ got unsigned int [noderef] __percpu * @@
mm/memcontrol.c:600:9: sparse: expected void *ptr
mm/memcontrol.c:600:9: sparse: got unsigned int [noderef] __percpu *
>> mm/memcontrol.c:600:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void *ptr @@ got int [noderef] __percpu * @@
mm/memcontrol.c:600:9: sparse: expected void *ptr
mm/memcontrol.c:600:9: sparse: got int [noderef] __percpu *
>> mm/memcontrol.c:600:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void *ptr @@ got int [noderef] __percpu * @@
mm/memcontrol.c:600:9: sparse: expected void *ptr
mm/memcontrol.c:600:9: sparse: got int [noderef] __percpu *
>> mm/memcontrol.c:600:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void *ptr @@ got int [noderef] __percpu * @@
mm/memcontrol.c:600:9: sparse: expected void *ptr
mm/memcontrol.c:600:9: sparse: got int [noderef] __percpu *
>> mm/memcontrol.c:600:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void *ptr @@ got int [noderef] __percpu * @@
mm/memcontrol.c:600:9: sparse: expected void *ptr
mm/memcontrol.c:600:9: sparse: got int [noderef] __percpu *
mm/memcontrol.c:606:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void *ptr @@ got unsigned int [noderef] __percpu * @@
mm/memcontrol.c:606:9: sparse: expected void *ptr
mm/memcontrol.c:606:9: sparse: got unsigned int [noderef] __percpu *
mm/memcontrol.c:606:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void *ptr @@ got unsigned int [noderef] __percpu * @@
mm/memcontrol.c:606:9: sparse: expected void *ptr
mm/memcontrol.c:606:9: sparse: got unsigned int [noderef] __percpu *
mm/memcontrol.c:606:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void *ptr @@ got unsigned int [noderef] __percpu * @@
mm/memcontrol.c:606:9: sparse: expected void *ptr
mm/memcontrol.c:606:9: sparse: got unsigned int [noderef] __percpu *
mm/memcontrol.c:606:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void *ptr @@ got unsigned int [noderef] __percpu * @@
mm/memcontrol.c:606:9: sparse: expected void *ptr
mm/memcontrol.c:606:9: sparse: got unsigned int [noderef] __percpu *
mm/memcontrol.c:606:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void *ptr @@ got int [noderef] __percpu * @@
mm/memcontrol.c:606:9: sparse: expected void *ptr
mm/memcontrol.c:606:9: sparse: got int [noderef] __percpu *
mm/memcontrol.c:606:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void *ptr @@ got int [noderef] __percpu * @@
mm/memcontrol.c:606:9: sparse: expected void *ptr
mm/memcontrol.c:606:9: sparse: got int [noderef] __percpu *
mm/memcontrol.c:606:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void *ptr @@ got int [noderef] __percpu * @@
mm/memcontrol.c:606:9: sparse: expected void *ptr
mm/memcontrol.c:606:9: sparse: got int [noderef] __percpu *
mm/memcontrol.c:606:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void *ptr @@ got int [noderef] __percpu * @@
mm/memcontrol.c:606:9: sparse: expected void *ptr
mm/memcontrol.c:606:9: sparse: got int [noderef] __percpu *
mm/memcontrol.c:4109:21: sparse: sparse: incompatible types in comparison expression (different address spaces):
mm/memcontrol.c:4109:21: sparse: struct mem_cgroup_threshold_ary [noderef] __rcu *
mm/memcontrol.c:4109:21: sparse: struct mem_cgroup_threshold_ary *
mm/memcontrol.c:4111:21: sparse: sparse: incompatible types in comparison expression (different address spaces):
mm/memcontrol.c:4111:21: sparse: struct mem_cgroup_threshold_ary [noderef] __rcu *
mm/memcontrol.c:4111:21: sparse: struct mem_cgroup_threshold_ary *
mm/memcontrol.c:4267:9: sparse: sparse: incompatible types in comparison expression (different address spaces):
mm/memcontrol.c:4267:9: sparse: struct mem_cgroup_threshold_ary [noderef] __rcu *
mm/memcontrol.c:4267:9: sparse: struct mem_cgroup_threshold_ary *
mm/memcontrol.c:4361:9: sparse: sparse: incompatible types in comparison expression (different address spaces):
mm/memcontrol.c:4361:9: sparse: struct mem_cgroup_threshold_ary [noderef] __rcu *
mm/memcontrol.c:4361:9: sparse: struct mem_cgroup_threshold_ary *
mm/memcontrol.c:5991:23: sparse: sparse: incompatible types in comparison expression (different address spaces):
mm/memcontrol.c:5991:23: sparse: struct task_struct [noderef] __rcu *
mm/memcontrol.c:5991:23: sparse: struct task_struct *
mm/memcontrol.c:914:24: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void *ptr @@ got struct mem_cgroup *[noderef] __percpu * @@
mm/memcontrol.c:914:24: sparse: expected void *ptr
mm/memcontrol.c:914:24: sparse: got struct mem_cgroup *[noderef] __percpu *
mm/memcontrol.c:914:24: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void *ptr @@ got struct mem_cgroup *[noderef] __percpu * @@
mm/memcontrol.c:914:24: sparse: expected void *ptr
mm/memcontrol.c:914:24: sparse: got struct mem_cgroup *[noderef] __percpu *
mm/memcontrol.c:914:24: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void *ptr @@ got struct mem_cgroup *[noderef] __percpu * @@
mm/memcontrol.c:914:24: sparse: expected void *ptr
mm/memcontrol.c:914:24: sparse: got struct mem_cgroup *[noderef] __percpu *
mm/memcontrol.c:914:24: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void *ptr @@ got struct mem_cgroup *[noderef] __percpu * @@
mm/memcontrol.c:914:24: sparse: expected void *ptr
mm/memcontrol.c:914:24: sparse: got struct mem_cgroup *[noderef] __percpu *
mm/memcontrol.c: note: in included file:
include/linux/memcontrol.h:754:9: sparse: sparse: context imbalance in 'folio_lruvec_lock' - wrong count at exit
include/linux/memcontrol.h:754:9: sparse: sparse: context imbalance in 'folio_lruvec_lock_irq' - wrong count at exit
include/linux/memcontrol.h:754:9: sparse: sparse: context imbalance in 'folio_lruvec_lock_irqsave' - wrong count at exit
mm/memcontrol.c:2027:6: sparse: sparse: context imbalance in 'folio_memcg_lock' - wrong count at exit
mm/memcontrol.c:2079:17: sparse: sparse: context imbalance in '__folio_memcg_unlock' - unexpected unlock
mm/memcontrol.c:914:24: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void *ptr @@ got struct mem_cgroup *[noderef] __percpu * @@
mm/memcontrol.c:914:24: sparse: expected void *ptr
mm/memcontrol.c:914:24: sparse: got struct mem_cgroup *[noderef] __percpu *
mm/memcontrol.c:914:24: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void *ptr @@ got struct mem_cgroup *[noderef] __percpu * @@
mm/memcontrol.c:914:24: sparse: expected void *ptr
mm/memcontrol.c:914:24: sparse: got struct mem_cgroup *[noderef] __percpu *
mm/memcontrol.c:914:24: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void *ptr @@ got struct mem_cgroup *[noderef] __percpu * @@
mm/memcontrol.c:914:24: sparse: expected void *ptr
mm/memcontrol.c:914:24: sparse: got struct mem_cgroup *[noderef] __percpu *
mm/memcontrol.c:914:24: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void *ptr @@ got struct mem_cgroup *[noderef] __percpu * @@
mm/memcontrol.c:914:24: sparse: expected void *ptr
mm/memcontrol.c:914:24: sparse: got struct mem_cgroup *[noderef] __percpu *
mm/memcontrol.c:914:24: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void *ptr @@ got struct mem_cgroup *[noderef] __percpu * @@
mm/memcontrol.c:914:24: sparse: expected void *ptr
mm/memcontrol.c:914:24: sparse: got struct mem_cgroup *[noderef] __percpu *
mm/memcontrol.c:914:24: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void *ptr @@ got struct mem_cgroup *[noderef] __percpu * @@
mm/memcontrol.c:914:24: sparse: expected void *ptr
mm/memcontrol.c:914:24: sparse: got struct mem_cgroup *[noderef] __percpu *
mm/memcontrol.c:914:24: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void *ptr @@ got struct mem_cgroup *[noderef] __percpu * @@
mm/memcontrol.c:914:24: sparse: expected void *ptr
mm/memcontrol.c:914:24: sparse: got struct mem_cgroup *[noderef] __percpu *
mm/memcontrol.c:914:24: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void *ptr @@ got struct mem_cgroup *[noderef] __percpu * @@
mm/memcontrol.c:914:24: sparse: expected void *ptr
mm/memcontrol.c:914:24: sparse: got struct mem_cgroup *[noderef] __percpu *
mm/memcontrol.c:914:24: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void *ptr @@ got struct mem_cgroup *[noderef] __percpu * @@
mm/memcontrol.c:914:24: sparse: expected void *ptr
mm/memcontrol.c:914:24: sparse: got struct mem_cgroup *[noderef] __percpu *
mm/memcontrol.c:914:24: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void *ptr @@ got struct mem_cgroup *[noderef] __percpu * @@
mm/memcontrol.c:914:24: sparse: expected void *ptr
mm/memcontrol.c:914:24: sparse: got struct mem_cgroup *[noderef] __percpu *
mm/memcontrol.c:914:24: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void *ptr @@ got struct mem_cgroup *[noderef] __percpu * @@
mm/memcontrol.c:914:24: sparse: expected void *ptr
mm/memcontrol.c:914:24: sparse: got struct mem_cgroup *[noderef] __percpu *
mm/memcontrol.c:914:24: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void *ptr @@ got struct mem_cgroup *[noderef] __percpu * @@
mm/memcontrol.c:914:24: sparse: expected void *ptr
mm/memcontrol.c:914:24: sparse: got struct mem_cgroup *[noderef] __percpu *
mm/memcontrol.c:914:24: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void *ptr @@ got struct mem_cgroup *[noderef] __percpu * @@
mm/memcontrol.c:914:24: sparse: expected void *ptr
mm/memcontrol.c:914:24: sparse: got struct mem_cgroup *[noderef] __percpu *
mm/memcontrol.c:914:24: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void *ptr @@ got struct mem_cgroup *[noderef] __percpu * @@
mm/memcontrol.c:914:24: sparse: expected void *ptr

vim +600 mm/memcontrol.c

591
592 /*
593 * Accessors to ensure that preemption is disabled on PREEMPT_RT because it can
594 * not rely on this as part of an acquired spinlock_t lock. These functions are
595 * never used in hardirq context on PREEMPT_RT and therefore disabling preemtion
596 * is sufficient.
597 */
598 static void memcg_stats_lock(void)
599 {
> 600 preempt_disable_nested();
601 VM_WARN_ON_IRQS_ENABLED();
602 }
603

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