lib/flex_proportions.c:73:9: sparse: sparse: incorrect type in argument 1 (different address spaces)

From: kernel test robot
Date: Tue Nov 07 2023 - 20:07:14 EST


tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: 13d88ac54ddd1011b6e94443958e798aa06eb835
commit: 9458e0a78c45bc6537ce11eb9f03489eab92f9c2 flex_proportions: Disable preemption entering the write section.
date: 1 year, 2 months ago
config: loongarch-randconfig-r123-20231107 (https://download.01.org/0day-ci/archive/20231108/202311080840.Vc2kXhfp-lkp@xxxxxxxxx/config)
compiler: loongarch64-linux-gcc (GCC) 13.2.0
reproduce: (https://download.01.org/0day-ci/archive/20231108/202311080840.Vc2kXhfp-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/202311080840.Vc2kXhfp-lkp@xxxxxxxxx/

sparse warnings: (new ones prefixed by >>)
>> lib/flex_proportions.c:73:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void *ptr @@ got unsigned int [noderef] __percpu * @@
lib/flex_proportions.c:73:9: sparse: expected void *ptr
lib/flex_proportions.c:73:9: sparse: got unsigned int [noderef] __percpu *
>> lib/flex_proportions.c:73:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void *ptr @@ got unsigned int [noderef] __percpu * @@
lib/flex_proportions.c:73:9: sparse: expected void *ptr
lib/flex_proportions.c:73:9: sparse: got unsigned int [noderef] __percpu *
>> lib/flex_proportions.c:73:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void *ptr @@ got unsigned int [noderef] __percpu * @@
lib/flex_proportions.c:73:9: sparse: expected void *ptr
lib/flex_proportions.c:73:9: sparse: got unsigned int [noderef] __percpu *
>> lib/flex_proportions.c:73:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void *ptr @@ got unsigned int [noderef] __percpu * @@
lib/flex_proportions.c:73:9: sparse: expected void *ptr
lib/flex_proportions.c:73:9: sparse: got unsigned int [noderef] __percpu *
>> lib/flex_proportions.c:73:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void *ptr @@ got int [noderef] __percpu * @@
lib/flex_proportions.c:73:9: sparse: expected void *ptr
lib/flex_proportions.c:73:9: sparse: got int [noderef] __percpu *
>> lib/flex_proportions.c:73:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void *ptr @@ got int [noderef] __percpu * @@
lib/flex_proportions.c:73:9: sparse: expected void *ptr
lib/flex_proportions.c:73:9: sparse: got int [noderef] __percpu *
>> lib/flex_proportions.c:73:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void *ptr @@ got int [noderef] __percpu * @@
lib/flex_proportions.c:73:9: sparse: expected void *ptr
lib/flex_proportions.c:73:9: sparse: got int [noderef] __percpu *
>> lib/flex_proportions.c:73:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void *ptr @@ got int [noderef] __percpu * @@
lib/flex_proportions.c:73:9: sparse: expected void *ptr
lib/flex_proportions.c:73:9: sparse: got int [noderef] __percpu *
lib/flex_proportions.c: note: in included file (through include/linux/mmzone.h, include/linux/gfp.h, include/linux/percpu_counter.h, ...):
include/linux/seqlock.h:269:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void *ptr @@ got unsigned int [noderef] __percpu * @@
include/linux/seqlock.h:269:9: sparse: expected void *ptr
include/linux/seqlock.h:269:9: sparse: got unsigned int [noderef] __percpu *
include/linux/seqlock.h:269:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void *ptr @@ got unsigned int [noderef] __percpu * @@
include/linux/seqlock.h:269:9: sparse: expected void *ptr
include/linux/seqlock.h:269:9: sparse: got unsigned int [noderef] __percpu *
include/linux/seqlock.h:269:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void *ptr @@ got unsigned int [noderef] __percpu * @@
include/linux/seqlock.h:269:9: sparse: expected void *ptr
include/linux/seqlock.h:269:9: sparse: got unsigned int [noderef] __percpu *
include/linux/seqlock.h:269:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void *ptr @@ got unsigned int [noderef] __percpu * @@
include/linux/seqlock.h:269:9: sparse: expected void *ptr
include/linux/seqlock.h:269:9: sparse: got unsigned int [noderef] __percpu *
include/linux/seqlock.h:269:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void *ptr @@ got int [noderef] __percpu * @@
include/linux/seqlock.h:269:9: sparse: expected void *ptr
include/linux/seqlock.h:269:9: sparse: got int [noderef] __percpu *
include/linux/seqlock.h:269:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void *ptr @@ got int [noderef] __percpu * @@
include/linux/seqlock.h:269:9: sparse: expected void *ptr
include/linux/seqlock.h:269:9: sparse: got int [noderef] __percpu *
include/linux/seqlock.h:269:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void *ptr @@ got int [noderef] __percpu * @@
include/linux/seqlock.h:269:9: sparse: expected void *ptr
include/linux/seqlock.h:269:9: sparse: got int [noderef] __percpu *
include/linux/seqlock.h:269:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void *ptr @@ got int [noderef] __percpu * @@
include/linux/seqlock.h:269:9: sparse: expected void *ptr
include/linux/seqlock.h:269:9: sparse: got int [noderef] __percpu *

vim +73 lib/flex_proportions.c

55
56 /*
57 * Declare @periods new periods. It is upto the caller to make sure period
58 * transitions cannot happen in parallel.
59 *
60 * The function returns true if the proportions are still defined and false
61 * if aging zeroed out all events. This can be used to detect whether declaring
62 * further periods has any effect.
63 */
64 bool fprop_new_period(struct fprop_global *p, int periods)
65 {
66 s64 events = percpu_counter_sum(&p->events);
67
68 /*
69 * Don't do anything if there are no events.
70 */
71 if (events <= 1)
72 return false;
> 73 preempt_disable_nested();
74 write_seqcount_begin(&p->sequence);
75 if (periods < 64)
76 events -= events >> periods;
77 /* Use addition to avoid losing events happening between sum and set */
78 percpu_counter_add(&p->events, -events);
79 p->period += periods;
80 write_seqcount_end(&p->sequence);
81 preempt_enable_nested();
82
83 return true;
84 }
85

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