[arm-integrator:kernel-in-vmalloc-v5.18-rc1 8/9] lib/test_free_pages.c:20:36: warning: incompatible integer to pointer conversion passing 'unsigned long' to parameter of type 'const void *'

From: kernel test robot
Date: Tue May 17 2022 - 09:58:13 EST


tree: https://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-integrator.git kernel-in-vmalloc-v5.18-rc1
head: 67a8d6eb3d015908f35d6091c02f17d7c3b55bf3
commit: 52cbc963c5c9daba74109e9782e3487cdf48fe5c [8/9] ARM: Compile the kernel into VMALLOC
config: arm-randconfig-r021-20220516 (https://download.01.org/0day-ci/archive/20220517/202205172107.C9n2wfmb-lkp@xxxxxxxxx/config)
compiler: clang version 15.0.0 (https://github.com/llvm/llvm-project 853fa8ee225edf2d0de94b0dcbd31bea916e825e)
reproduce (this is a W=1 build):
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# install arm cross compiling tool for clang build
# apt-get install binutils-arm-linux-gnueabi
# https://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-integrator.git/commit/?id=52cbc963c5c9daba74109e9782e3487cdf48fe5c
git remote add arm-integrator https://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-integrator.git
git fetch --no-tags arm-integrator kernel-in-vmalloc-v5.18-rc1
git checkout 52cbc963c5c9daba74109e9782e3487cdf48fe5c
# save the config file
mkdir build_dir && cp config build_dir/.config
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=arm SHELL=/bin/bash lib/

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

All warnings (new ones prefixed by >>):

>> lib/test_free_pages.c:20:36: warning: incompatible integer to pointer conversion passing 'unsigned long' to parameter of type 'const void *' [-Wint-conversion]
struct page *page = virt_to_page(addr);
^~~~
arch/arm/include/asm/memory.h:442:53: note: expanded from macro 'virt_to_page'
#define virt_to_page(kaddr) pfn_to_page(virt_to_pfn(kaddr))
^~~~~
include/asm-generic/memory_model.h:40:27: note: expanded from macro '__pfn_to_page'
({ unsigned long __pfn = (pfn); \
^~~
arch/arm/include/asm/memory.h:323:53: note: passing argument to parameter 'p' here
static inline unsigned long virt_to_pfn(const void *p)
^
1 warning generated.


vim +20 lib/test_free_pages.c

e320d3012d25b1 Matthew Wilcox (Oracle 2020-10-13 13)
e320d3012d25b1 Matthew Wilcox (Oracle 2020-10-13 14) static void test_free_pages(gfp_t gfp)
e320d3012d25b1 Matthew Wilcox (Oracle 2020-10-13 15) {
e320d3012d25b1 Matthew Wilcox (Oracle 2020-10-13 16) unsigned int i;
e320d3012d25b1 Matthew Wilcox (Oracle 2020-10-13 17)
e320d3012d25b1 Matthew Wilcox (Oracle 2020-10-13 18) for (i = 0; i < 1000 * 1000; i++) {
e320d3012d25b1 Matthew Wilcox (Oracle 2020-10-13 19) unsigned long addr = __get_free_pages(gfp, 3);
e320d3012d25b1 Matthew Wilcox (Oracle 2020-10-13 @20) struct page *page = virt_to_page(addr);
e320d3012d25b1 Matthew Wilcox (Oracle 2020-10-13 21)
e320d3012d25b1 Matthew Wilcox (Oracle 2020-10-13 22) /* Simulate page cache getting a speculative reference */
e320d3012d25b1 Matthew Wilcox (Oracle 2020-10-13 23) get_page(page);
e320d3012d25b1 Matthew Wilcox (Oracle 2020-10-13 24) free_pages(addr, 3);
e320d3012d25b1 Matthew Wilcox (Oracle 2020-10-13 25) put_page(page);
e320d3012d25b1 Matthew Wilcox (Oracle 2020-10-13 26) }
e320d3012d25b1 Matthew Wilcox (Oracle 2020-10-13 27) }
e320d3012d25b1 Matthew Wilcox (Oracle 2020-10-13 28)

:::::: The code at line 20 was first introduced by commit
:::::: e320d3012d25b1fb5f3df4edb7bd44a1c362ec10 mm/page_alloc.c: fix freeing non-compound pages

:::::: TO: Matthew Wilcox (Oracle) <willy@xxxxxxxxxxxxx>
:::::: CC: Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxx>

--
0-DAY CI Kernel Test Service
https://01.org/lkp