fs/eventpoll.c:620:9: sparse: sparse: incorrect type in argument 1 (different address spaces)

From: kernel test robot
Date: Thu Aug 10 2023 - 22:29:33 EST


Hi Qing,

First bad commit (maybe != root cause):

tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: 25aa0bebba72b318e71fe205bfd1236550cc9534
commit: 93a4fa622eb061f75f87f0cf9609ab4e69c67d01 LoongArch: Add STACKTRACE support
date: 12 months ago
config: loongarch-randconfig-r072-20230811 (https://download.01.org/0day-ci/archive/20230811/202308111025.QvCwtqk7-lkp@xxxxxxxxx/config)
compiler: loongarch64-linux-gcc (GCC) 12.3.0
reproduce: (https://download.01.org/0day-ci/archive/20230811/202308111025.QvCwtqk7-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/202308111025.QvCwtqk7-lkp@xxxxxxxxx/

sparse warnings: (new ones prefixed by >>)
>> fs/eventpoll.c:620:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void *ptr @@ got unsigned int [noderef] __percpu * @@
fs/eventpoll.c:620:9: sparse: expected void *ptr
fs/eventpoll.c:620:9: sparse: got unsigned int [noderef] __percpu *
>> fs/eventpoll.c:620:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void *ptr @@ got unsigned int [noderef] __percpu * @@
fs/eventpoll.c:620:9: sparse: expected void *ptr
fs/eventpoll.c:620:9: sparse: got unsigned int [noderef] __percpu *
>> fs/eventpoll.c:620:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void *ptr @@ got unsigned int [noderef] __percpu * @@
fs/eventpoll.c:620:9: sparse: expected void *ptr
fs/eventpoll.c:620:9: sparse: got unsigned int [noderef] __percpu *
>> fs/eventpoll.c:620:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void *ptr @@ got unsigned int [noderef] __percpu * @@
fs/eventpoll.c:620:9: sparse: expected void *ptr
fs/eventpoll.c:620:9: sparse: got unsigned int [noderef] __percpu *
>> fs/eventpoll.c:620:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void *ptr @@ got int [noderef] __percpu * @@
fs/eventpoll.c:620:9: sparse: expected void *ptr
fs/eventpoll.c:620:9: sparse: got int [noderef] __percpu *
>> fs/eventpoll.c:620:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void *ptr @@ got int [noderef] __percpu * @@
fs/eventpoll.c:620:9: sparse: expected void *ptr
fs/eventpoll.c:620:9: sparse: got int [noderef] __percpu *
>> fs/eventpoll.c:620:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void *ptr @@ got int [noderef] __percpu * @@
fs/eventpoll.c:620:9: sparse: expected void *ptr
fs/eventpoll.c:620:9: sparse: got int [noderef] __percpu *
>> fs/eventpoll.c:620:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void *ptr @@ got int [noderef] __percpu * @@
fs/eventpoll.c:620:9: sparse: expected void *ptr
fs/eventpoll.c:620:9: sparse: got int [noderef] __percpu *
fs/eventpoll.c:692:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void *ptr @@ got unsigned int [noderef] __percpu * @@
fs/eventpoll.c:692:9: sparse: expected void *ptr
fs/eventpoll.c:692:9: sparse: got unsigned int [noderef] __percpu *
fs/eventpoll.c:692:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void *ptr @@ got unsigned int [noderef] __percpu * @@
fs/eventpoll.c:692:9: sparse: expected void *ptr
fs/eventpoll.c:692:9: sparse: got unsigned int [noderef] __percpu *
fs/eventpoll.c:692:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void *ptr @@ got unsigned int [noderef] __percpu * @@
fs/eventpoll.c:692:9: sparse: expected void *ptr
fs/eventpoll.c:692:9: sparse: got unsigned int [noderef] __percpu *
fs/eventpoll.c:692:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void *ptr @@ got unsigned int [noderef] __percpu * @@
fs/eventpoll.c:692:9: sparse: expected void *ptr
fs/eventpoll.c:692:9: sparse: got unsigned int [noderef] __percpu *
fs/eventpoll.c:692:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void *ptr @@ got int [noderef] __percpu * @@
fs/eventpoll.c:692:9: sparse: expected void *ptr
fs/eventpoll.c:692:9: sparse: got int [noderef] __percpu *
fs/eventpoll.c:692:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void *ptr @@ got int [noderef] __percpu * @@
fs/eventpoll.c:692:9: sparse: expected void *ptr
fs/eventpoll.c:692:9: sparse: got int [noderef] __percpu *
fs/eventpoll.c:692:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void *ptr @@ got int [noderef] __percpu * @@
fs/eventpoll.c:692:9: sparse: expected void *ptr
fs/eventpoll.c:692:9: sparse: got int [noderef] __percpu *
fs/eventpoll.c:692:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void *ptr @@ got int [noderef] __percpu * @@
fs/eventpoll.c:692:9: sparse: expected void *ptr
fs/eventpoll.c:692:9: sparse: got int [noderef] __percpu *
fs/eventpoll.c:1456:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void *ptr @@ got unsigned int [noderef] __percpu * @@
fs/eventpoll.c:1456:9: sparse: expected void *ptr
fs/eventpoll.c:1456:9: sparse: got unsigned int [noderef] __percpu *
fs/eventpoll.c:1456:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void *ptr @@ got unsigned int [noderef] __percpu * @@
fs/eventpoll.c:1456:9: sparse: expected void *ptr
fs/eventpoll.c:1456:9: sparse: got unsigned int [noderef] __percpu *
fs/eventpoll.c:1456:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void *ptr @@ got unsigned int [noderef] __percpu * @@
fs/eventpoll.c:1456:9: sparse: expected void *ptr
fs/eventpoll.c:1456:9: sparse: got unsigned int [noderef] __percpu *
fs/eventpoll.c:1456:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void *ptr @@ got unsigned int [noderef] __percpu * @@
fs/eventpoll.c:1456:9: sparse: expected void *ptr
fs/eventpoll.c:1456:9: sparse: got unsigned int [noderef] __percpu *
fs/eventpoll.c:1456:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void *ptr @@ got int [noderef] __percpu * @@
fs/eventpoll.c:1456:9: sparse: expected void *ptr
fs/eventpoll.c:1456:9: sparse: got int [noderef] __percpu *
fs/eventpoll.c:1456:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void *ptr @@ got int [noderef] __percpu * @@
fs/eventpoll.c:1456:9: sparse: expected void *ptr
fs/eventpoll.c:1456:9: sparse: got int [noderef] __percpu *
fs/eventpoll.c:1456:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void *ptr @@ got int [noderef] __percpu * @@
fs/eventpoll.c:1456:9: sparse: expected void *ptr
fs/eventpoll.c:1456:9: sparse: got int [noderef] __percpu *
fs/eventpoll.c:1456:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void *ptr @@ got int [noderef] __percpu * @@
fs/eventpoll.c:1456:9: sparse: expected void *ptr
fs/eventpoll.c:1456:9: sparse: got int [noderef] __percpu *
fs/eventpoll.c:1571:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void *ptr @@ got unsigned int [noderef] __percpu * @@
fs/eventpoll.c:1571:9: sparse: expected void *ptr
fs/eventpoll.c:1571:9: sparse: got unsigned int [noderef] __percpu *
fs/eventpoll.c:1571:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void *ptr @@ got unsigned int [noderef] __percpu * @@
fs/eventpoll.c:1571:9: sparse: expected void *ptr
fs/eventpoll.c:1571:9: sparse: got unsigned int [noderef] __percpu *
fs/eventpoll.c:1571:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void *ptr @@ got unsigned int [noderef] __percpu * @@
fs/eventpoll.c:1571:9: sparse: expected void *ptr
fs/eventpoll.c:1571:9: sparse: got unsigned int [noderef] __percpu *
fs/eventpoll.c:1571:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void *ptr @@ got unsigned int [noderef] __percpu * @@
fs/eventpoll.c:1571:9: sparse: expected void *ptr
fs/eventpoll.c:1571:9: sparse: got unsigned int [noderef] __percpu *
fs/eventpoll.c:1571:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void *ptr @@ got int [noderef] __percpu * @@
fs/eventpoll.c:1571:9: sparse: expected void *ptr
fs/eventpoll.c:1571:9: sparse: got int [noderef] __percpu *
fs/eventpoll.c:1571:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void *ptr @@ got int [noderef] __percpu * @@
fs/eventpoll.c:1571:9: sparse: expected void *ptr
fs/eventpoll.c:1571:9: sparse: got int [noderef] __percpu *
fs/eventpoll.c:1571:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void *ptr @@ got int [noderef] __percpu * @@
fs/eventpoll.c:1571:9: sparse: expected void *ptr
fs/eventpoll.c:1571:9: sparse: got int [noderef] __percpu *
fs/eventpoll.c:1571:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void *ptr @@ got int [noderef] __percpu * @@
fs/eventpoll.c:1571:9: sparse: expected void *ptr
fs/eventpoll.c:1571:9: sparse: got int [noderef] __percpu *
fs/eventpoll.c:1775:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void *ptr @@ got unsigned int [noderef] __percpu * @@
fs/eventpoll.c:1775:9: sparse: expected void *ptr
fs/eventpoll.c:1775:9: sparse: got unsigned int [noderef] __percpu *
fs/eventpoll.c:1775:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void *ptr @@ got unsigned int [noderef] __percpu * @@
fs/eventpoll.c:1775:9: sparse: expected void *ptr
fs/eventpoll.c:1775:9: sparse: got unsigned int [noderef] __percpu *
fs/eventpoll.c:1775:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void *ptr @@ got unsigned int [noderef] __percpu * @@
fs/eventpoll.c:1775:9: sparse: expected void *ptr
fs/eventpoll.c:1775:9: sparse: got unsigned int [noderef] __percpu *
fs/eventpoll.c:1775:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void *ptr @@ got unsigned int [noderef] __percpu * @@
fs/eventpoll.c:1775:9: sparse: expected void *ptr
fs/eventpoll.c:1775:9: sparse: got unsigned int [noderef] __percpu *
fs/eventpoll.c:1775:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void *ptr @@ got int [noderef] __percpu * @@
fs/eventpoll.c:1775:9: sparse: expected void *ptr
fs/eventpoll.c:1775:9: sparse: got int [noderef] __percpu *
fs/eventpoll.c:1775:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void *ptr @@ got int [noderef] __percpu * @@
fs/eventpoll.c:1775:9: sparse: expected void *ptr
fs/eventpoll.c:1775:9: sparse: got int [noderef] __percpu *
fs/eventpoll.c:1775:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void *ptr @@ got int [noderef] __percpu * @@
fs/eventpoll.c:1775:9: sparse: expected void *ptr
fs/eventpoll.c:1775:9: sparse: got int [noderef] __percpu *
fs/eventpoll.c:1775:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void *ptr @@ got int [noderef] __percpu * @@
fs/eventpoll.c:1775:9: sparse: expected void *ptr
fs/eventpoll.c:1775:9: sparse: got int [noderef] __percpu *

vim +620 fs/eventpoll.c

eea1d585917c53 Eric Wong 2013-04-30 604
92e64178405599 Davidlohr Bueso 2018-08-21 605
5071f97ec6d74f Davide Libenzi 2009-03-31 606 /*
57804b1cc46167 Al Viro 2020-08-31 607 * ep->mutex needs to be held because we could be hit by
e057e15ff66a62 Tony Battersby 2009-03-31 608 * eventpoll_release_file() and epoll_ctl().
5071f97ec6d74f Davide Libenzi 2009-03-31 609 */
57804b1cc46167 Al Viro 2020-08-31 610 static void ep_start_scan(struct eventpoll *ep, struct list_head *txlist)
57804b1cc46167 Al Viro 2020-08-31 611 {
5071f97ec6d74f Davide Libenzi 2009-03-31 612 /*
5071f97ec6d74f Davide Libenzi 2009-03-31 613 * Steal the ready list, and re-init the original one to the
5071f97ec6d74f Davide Libenzi 2009-03-31 614 * empty list. Also, set ep->ovflist to NULL so that events
5071f97ec6d74f Davide Libenzi 2009-03-31 615 * happening while looping w/out locks, are not lost. We cannot
5071f97ec6d74f Davide Libenzi 2009-03-31 616 * have the poll callback to queue directly on ep->rdllist,
5071f97ec6d74f Davide Libenzi 2009-03-31 617 * because we want the "sproc" callback to be able to do it
5071f97ec6d74f Davide Libenzi 2009-03-31 618 * in a lockless way.
5071f97ec6d74f Davide Libenzi 2009-03-31 619 */
57804b1cc46167 Al Viro 2020-08-31 @620 lockdep_assert_irqs_enabled();
a218cc4914209a Roman Penyaev 2019-03-07 621 write_lock_irq(&ep->lock);
db502f8a3b0bb5 Al Viro 2020-08-31 622 list_splice_init(&ep->rdllist, txlist);
c5a282e9635e9c Davidlohr Bueso 2019-01-03 623 WRITE_ONCE(ep->ovflist, NULL);
a218cc4914209a Roman Penyaev 2019-03-07 624 write_unlock_irq(&ep->lock);
db502f8a3b0bb5 Al Viro 2020-08-31 625 }
5071f97ec6d74f Davide Libenzi 2009-03-31 626

:::::: The code at line 620 was first introduced by commit
:::::: 57804b1cc4616780c72a2d0930d1bd0d5bd3ed4c lift locking/unlocking ep->mtx out of ep_{start,done}_scan()

:::::: TO: Al Viro <viro@xxxxxxxxxxxxxxxxxx>
:::::: CC: Al Viro <viro@xxxxxxxxxxxxxxxxxx>

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