arch/arm/mm/copypage-feroceon.c:65:6: sparse: sparse: symbol 'feroceon_copy_user_highpage' was not declared. Should it be static?

From: kernel test robot
Date: Mon Jan 30 2023 - 22:04:37 EST


Hi Stephen,

First bad commit (maybe != root cause):

tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: 22b8077d0fcec86c6ed0e0fce9f7e7e5a4c2d56a
commit: 250c1a694ff304e5d69e74ab32755eddcc2b8f65 ARM: pxa: convert to multiplatform
date: 9 months ago
config: arm-randconfig-s042-20230129 (https://download.01.org/0day-ci/archive/20230131/202301311052.rwOHaa5u-lkp@xxxxxxxxx/config)
compiler: arm-linux-gnueabi-gcc (GCC) 12.1.0
reproduce:
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# apt-get install sparse
# sparse version: v0.6.4-39-gce1a6720-dirty
# https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=250c1a694ff304e5d69e74ab32755eddcc2b8f65
git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
git fetch --no-tags linus master
git checkout 250c1a694ff304e5d69e74ab32755eddcc2b8f65
# save the config file
mkdir build_dir && cp config build_dir/.config
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-12.1.0 make.cross C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' O=build_dir ARCH=arm olddefconfig
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-12.1.0 make.cross C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' O=build_dir ARCH=arm SHELL=/bin/bash arch/arm/mach-orion5x/ arch/arm/mm/ drivers/uio/

If you fix the issue, kindly add following tag where applicable
| Reported-by: kernel test robot <lkp@xxxxxxxxx>

sparse warnings: (new ones prefixed by >>)
>> arch/arm/mm/copypage-feroceon.c:65:6: sparse: sparse: symbol 'feroceon_copy_user_highpage' was not declared. Should it be static?
>> arch/arm/mm/copypage-feroceon.c:78:6: sparse: sparse: symbol 'feroceon_clear_user_highpage' was not declared. Should it be static?
--
>> arch/arm/mach-orion5x/board-d2net.c:104:13: sparse: sparse: symbol 'd2net_init' was not declared. Should it be static?
--
drivers/uio/uio_aec.c:44:49: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected void [noderef] __iomem *int_flag @@ got void * @@
drivers/uio/uio_aec.c:44:49: sparse: expected void [noderef] __iomem *int_flag
drivers/uio/uio_aec.c:44:49: sparse: got void *
drivers/uio/uio_aec.c:50:49: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] __iomem *addr @@ got void * @@
drivers/uio/uio_aec.c:50:49: sparse: expected void const volatile [noderef] __iomem *addr
drivers/uio/uio_aec.c:50:49: sparse: got void *
drivers/uio/uio_aec.c:59:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] __iomem *addr @@ got void * @@
drivers/uio/uio_aec.c:59:9: sparse: expected void const volatile [noderef] __iomem *addr
drivers/uio/uio_aec.c:59:9: sparse: got void *
drivers/uio/uio_aec.c:59:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] __iomem *addr @@ got void * @@
drivers/uio/uio_aec.c:59:9: sparse: expected void const volatile [noderef] __iomem *addr
drivers/uio/uio_aec.c:59:9: sparse: got void *
drivers/uio/uio_aec.c:59:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] __iomem *addr @@ got void * @@
drivers/uio/uio_aec.c:59:9: sparse: expected void const volatile [noderef] __iomem *addr
drivers/uio/uio_aec.c:59:9: sparse: got void *
drivers/uio/uio_aec.c:59:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] __iomem *addr @@ got void * @@
drivers/uio/uio_aec.c:59:9: sparse: expected void const volatile [noderef] __iomem *addr
drivers/uio/uio_aec.c:59:9: sparse: got void *
drivers/uio/uio_aec.c:59:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] __iomem *addr @@ got void * @@
drivers/uio/uio_aec.c:59:9: sparse: expected void const volatile [noderef] __iomem *addr
drivers/uio/uio_aec.c:59:9: sparse: got void *
drivers/uio/uio_aec.c:59:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] __iomem *addr @@ got void * @@
drivers/uio/uio_aec.c:59:9: sparse: expected void const volatile [noderef] __iomem *addr
drivers/uio/uio_aec.c:59:9: sparse: got void *
drivers/uio/uio_aec.c:88:20: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected void *priv @@ got void [noderef] __iomem * @@
drivers/uio/uio_aec.c:88:20: sparse: expected void *priv
drivers/uio/uio_aec.c:88:20: sparse: got void [noderef] __iomem *
drivers/uio/uio_aec.c:104:42: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void volatile [noderef] __iomem *addr @@ got void * @@
drivers/uio/uio_aec.c:104:42: sparse: expected void volatile [noderef] __iomem *addr
drivers/uio/uio_aec.c:104:42: sparse: got void *
drivers/uio/uio_aec.c:105:43: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void volatile [noderef] __iomem *addr @@ got void * @@
drivers/uio/uio_aec.c:105:43: sparse: expected void volatile [noderef] __iomem *addr
drivers/uio/uio_aec.c:105:43: sparse: got void *
drivers/uio/uio_aec.c:106:34: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] __iomem *addr @@ got void * @@
drivers/uio/uio_aec.c:106:34: sparse: expected void const volatile [noderef] __iomem *addr
drivers/uio/uio_aec.c:106:34: sparse: got void *
>> drivers/uio/uio_aec.c:115:31: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void [noderef] __iomem *addr @@ got void *priv @@
drivers/uio/uio_aec.c:115:31: sparse: expected void [noderef] __iomem *addr
drivers/uio/uio_aec.c:115:31: sparse: got void *priv
drivers/uio/uio_aec.c:128:42: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void volatile [noderef] __iomem *addr @@ got void * @@
drivers/uio/uio_aec.c:128:42: sparse: expected void volatile [noderef] __iomem *addr
drivers/uio/uio_aec.c:128:42: sparse: got void *
drivers/uio/uio_aec.c:129:43: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void volatile [noderef] __iomem *addr @@ got void * @@
drivers/uio/uio_aec.c:129:43: sparse: expected void volatile [noderef] __iomem *addr
drivers/uio/uio_aec.c:129:43: sparse: got void *
drivers/uio/uio_aec.c:131:28: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] __iomem *addr @@ got void * @@
drivers/uio/uio_aec.c:131:28: sparse: expected void const volatile [noderef] __iomem *addr
drivers/uio/uio_aec.c:131:28: sparse: got void *
drivers/uio/uio_aec.c:136:31: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void [noderef] __iomem *addr @@ got void *priv @@
drivers/uio/uio_aec.c:136:31: sparse: expected void [noderef] __iomem *addr
drivers/uio/uio_aec.c:136:31: sparse: got void *priv

vim +/feroceon_copy_user_highpage +65 arch/arm/mm/copypage-feroceon.c

063b0a4207e43a Russell King 2008-10-31 @65 void feroceon_copy_user_highpage(struct page *to, struct page *from,
f00a75c094c340 Russell King 2009-10-05 66 unsigned long vaddr, struct vm_area_struct *vma)
063b0a4207e43a Russell King 2008-10-31 67 {
063b0a4207e43a Russell King 2008-10-31 68 void *kto, *kfrom;
063b0a4207e43a Russell King 2008-10-31 69
5472e862de2bc4 Cong Wang 2011-11-25 70 kto = kmap_atomic(to);
5472e862de2bc4 Cong Wang 2011-11-25 71 kfrom = kmap_atomic(from);
2725898fc9bb21 Russell King 2009-10-05 72 flush_cache_page(vma, vaddr, page_to_pfn(from));
063b0a4207e43a Russell King 2008-10-31 73 feroceon_copy_user_page(kto, kfrom);
5472e862de2bc4 Cong Wang 2011-11-25 74 kunmap_atomic(kfrom);
5472e862de2bc4 Cong Wang 2011-11-25 75 kunmap_atomic(kto);
063b0a4207e43a Russell King 2008-10-31 76 }
063b0a4207e43a Russell King 2008-10-31 77
303c6443659bc1 Russell King 2008-10-31 @78 void feroceon_clear_user_highpage(struct page *page, unsigned long vaddr)

:::::: The code at line 65 was first introduced by commit
:::::: 063b0a4207e43acbeff3d4b09f43e750e0212b48 [ARM] copypage: provide our own copy_user_highpage()

:::::: TO: Russell King <rmk@xxxxxxxxxxxxxxxxxxxxxxx>
:::::: CC: Russell King <rmk+kernel@xxxxxxxxxxxxxxxx>

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