Re: [PATCH v17 2/5] fs/proc/task_mmu: Implement IOCTL to get and optionally clear info about PTEs

From: kernel test robot
Date: Tue Jun 06 2023 - 17:08:34 EST


Hi Muhammad,

kernel test robot noticed the following build errors:

[auto build test ERROR on akpm-mm/mm-everything]
[also build test ERROR on next-20230606]
[cannot apply to linus/master v6.4-rc5]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]

url: https://github.com/intel-lab-lkp/linux/commits/Muhammad-Usama-Anjum/userfaultfd-UFFD_FEATURE_WP_ASYNC/20230606-141114
base: https://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm.git mm-everything
patch link: https://lore.kernel.org/r/20230606060822.1065182-3-usama.anjum%40collabora.com
patch subject: [PATCH v17 2/5] fs/proc/task_mmu: Implement IOCTL to get and optionally clear info about PTEs
config: arc-allyesconfig (https://download.01.org/0day-ci/archive/20230607/202306070414.XDn2ITuw-lkp@xxxxxxxxx/config)
compiler: arceb-elf-gcc (GCC) 12.3.0
reproduce (this is a W=1 build):
mkdir -p ~/bin
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
git remote add akpm-mm https://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm.git
git fetch akpm-mm mm-everything
git checkout akpm-mm/mm-everything
b4 shazam https://lore.kernel.org/r/20230606060822.1065182-3-usama.anjum@xxxxxxxxxxxxx
# save the config file
mkdir build_dir && cp config build_dir/.config
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-12.3.0 ~/bin/make.cross W=1 O=build_dir ARCH=arc olddefconfig
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-12.3.0 ~/bin/make.cross W=1 O=build_dir ARCH=arc SHELL=/bin/bash

If you fix the issue, kindly add following tag where applicable
| Reported-by: kernel test robot <lkp@xxxxxxxxx>
| Closes: https://lore.kernel.org/oe-kbuild-all/202306070414.XDn2ITuw-lkp@xxxxxxxxx/

All errors (new ones prefixed by >>):

fs/proc/task_mmu.c: In function 'pagemap_scan_pmd_entry':
>> fs/proc/task_mmu.c:1960:31: error: 'HPAGE_SIZE' undeclared (first use in this function); did you mean 'PAGE_SIZE'?
1960 | n_pages < HPAGE_SIZE/PAGE_SIZE) {
| ^~~~~~~~~~
| PAGE_SIZE
fs/proc/task_mmu.c:1960:31: note: each undeclared identifier is reported only once for each function it appears in


vim +1960 fs/proc/task_mmu.c

1931
1932 static int pagemap_scan_pmd_entry(pmd_t *pmd, unsigned long start,
1933 unsigned long end, struct mm_walk *walk)
1934 {
1935 struct pagemap_scan_private *p = walk->private;
1936 struct vm_area_struct *vma = walk->vma;
1937 unsigned long addr = end;
1938 pte_t *pte, *orig_pte;
1939 spinlock_t *ptl;
1940 bool is_written;
1941 int ret = 0;
1942
1943 arch_enter_lazy_mmu_mode();
1944
1945 #ifdef CONFIG_TRANSPARENT_HUGEPAGE
1946 ptl = pmd_trans_huge_lock(pmd, vma);
1947 if (ptl) {
1948 unsigned long n_pages = (end - start)/PAGE_SIZE;
1949
1950 if (p->max_pages && n_pages > p->max_pages - p->found_pages)
1951 n_pages = p->max_pages - p->found_pages;
1952
1953 is_written = !is_pmd_uffd_wp(*pmd);
1954
1955 /*
1956 * Break huge page into small pages if the WP operation need to
1957 * be performed is on a portion of the huge page.
1958 */
1959 if (is_written && IS_PM_SCAN_WP(p->flags) &&
> 1960 n_pages < HPAGE_SIZE/PAGE_SIZE) {
1961 spin_unlock(ptl);
1962
1963 split_huge_pmd(vma, pmd, start);
1964 goto process_smaller_pages;
1965 }
1966
1967 if (IS_PM_SCAN_GET(p->flags))
1968 ret = pagemap_scan_output(is_written, vma->vm_file,
1969 pmd_present(*pmd),
1970 is_swap_pmd(*pmd),
1971 p, start, n_pages);
1972
1973 if (ret >= 0 && is_written && IS_PM_SCAN_WP(p->flags))
1974 make_uffd_wp_pmd(vma, addr, pmd);
1975
1976 if (IS_PM_SCAN_WP(p->flags))
1977 flush_tlb_range(vma, start, end);
1978
1979 spin_unlock(ptl);
1980
1981 arch_leave_lazy_mmu_mode();
1982 return ret;
1983 }
1984
1985 process_smaller_pages:
1986 if (pmd_trans_unstable(pmd)) {
1987 arch_leave_lazy_mmu_mode();
1988 walk->action = ACTION_AGAIN;
1989 return 0;
1990 }
1991 #endif
1992
1993 orig_pte = pte = pte_offset_map_lock(vma->vm_mm, pmd, start, &ptl);
1994 for (addr = start; addr < end && !ret; pte++, addr += PAGE_SIZE) {
1995 is_written = !is_pte_uffd_wp(*pte);
1996
1997 if (IS_PM_SCAN_GET(p->flags))
1998 ret = pagemap_scan_output(is_written, vma->vm_file,
1999 pte_present(*pte),
2000 is_swap_pte(*pte),
2001 p, addr, 1);
2002
2003 if (ret >= 0 && is_written && IS_PM_SCAN_WP(p->flags))
2004 make_uffd_wp_pte(vma, addr, pte);
2005 }
2006
2007 if (IS_PM_SCAN_WP(p->flags))
2008 flush_tlb_range(vma, start, addr);
2009
2010 pte_unmap_unlock(orig_pte, ptl);
2011 arch_leave_lazy_mmu_mode();
2012
2013 cond_resched();
2014 return ret;
2015 }
2016

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