Re: [PATCH v9 2/3] fs/proc/task_mmu: Implement IOCTL to get and/or the clear info about PTEs

From: kernel test robot
Date: Wed Feb 01 2023 - 02:05:50 EST


Hi Muhammad,

Thank you for the patch! Yet something to improve:

[auto build test ERROR on shuah-kselftest/fixes]
[also build test ERROR on linus/master v6.2-rc6]
[cannot apply to shuah-kselftest/next]
[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-Add-UFFD-WP-Async-support/20230131-163537
base: https://git.kernel.org/pub/scm/linux/kernel/git/shuah/linux-kselftest.git fixes
patch link: https://lore.kernel.org/r/20230131083257.3302830-3-usama.anjum%40collabora.com
patch subject: [PATCH v9 2/3] fs/proc/task_mmu: Implement IOCTL to get and/or the clear info about PTEs
config: x86_64-rhel-8.3-rust (https://download.01.org/0day-ci/archive/20230201/202302011447.7lSFpVO5-lkp@xxxxxxxxx/config)
compiler: clang version 14.0.6 (https://github.com/llvm/llvm-project f28c006a5895fc0e329fe15fead81e37457cb1d1)
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
# https://github.com/intel-lab-lkp/linux/commit/11677b6b7fda958031115ea40aa219fc32c7dea4
git remote add linux-review https://github.com/intel-lab-lkp/linux
git fetch --no-tags linux-review Muhammad-Usama-Anjum/userfaultfd-Add-UFFD-WP-Async-support/20230131-163537
git checkout 11677b6b7fda958031115ea40aa219fc32c7dea4
# 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=x86_64 olddefconfig
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=x86_64 SHELL=/bin/bash fs/

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

All errors (new ones prefixed by >>):

>> fs/proc/task_mmu.c:1907:5: error: implicit declaration of function 'uffd_wp_range' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
uffd_wp_range(walk->mm, vma, start, HPAGE_SIZE, true);
^
fs/proc/task_mmu.c:1927:3: error: implicit declaration of function 'uffd_wp_range' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
uffd_wp_range(walk->mm, vma, start, addr - start, true);
^
2 errors generated.


vim +/uffd_wp_range +1907 fs/proc/task_mmu.c

1874
1875 static inline int pagemap_scan_pmd_entry(pmd_t *pmd, unsigned long start,
1876 unsigned long end, struct mm_walk *walk)
1877 {
1878 struct pagemap_scan_private *p = walk->private;
1879 struct vm_area_struct *vma = walk->vma;
1880 unsigned long addr = end;
1881 spinlock_t *ptl;
1882 int ret = 0;
1883 pte_t *pte;
1884
1885 #ifdef CONFIG_TRANSPARENT_HUGEPAGE
1886 ptl = pmd_trans_huge_lock(pmd, vma);
1887 if (ptl) {
1888 bool pmd_wt;
1889
1890 pmd_wt = !is_pmd_uffd_wp(*pmd);
1891 /*
1892 * Break huge page into small pages if operation needs to be performed is
1893 * on a portion of the huge page.
1894 */
1895 if (pmd_wt && IS_WP_ENGAGE_OP(p) && (end - start < HPAGE_SIZE)) {
1896 spin_unlock(ptl);
1897 split_huge_pmd(vma, pmd, start);
1898 goto process_smaller_pages;
1899 }
1900 if (IS_GET_OP(p))
1901 ret = pagemap_scan_output(pmd_wt, vma->vm_file, pmd_present(*pmd),
1902 is_swap_pmd(*pmd), p, start,
1903 (end - start)/PAGE_SIZE);
1904 spin_unlock(ptl);
1905 if (!ret) {
1906 if (pmd_wt && IS_WP_ENGAGE_OP(p))
> 1907 uffd_wp_range(walk->mm, vma, start, HPAGE_SIZE, true);
1908 }
1909 return ret;
1910 }
1911 process_smaller_pages:
1912 if (pmd_trans_unstable(pmd))
1913 return 0;
1914 #endif /* CONFIG_TRANSPARENT_HUGEPAGE */
1915
1916 pte = pte_offset_map_lock(vma->vm_mm, pmd, start, &ptl);
1917 if (IS_GET_OP(p)) {
1918 for (addr = start; addr < end; pte++, addr += PAGE_SIZE) {
1919 ret = pagemap_scan_output(!is_pte_uffd_wp(*pte), vma->vm_file,
1920 pte_present(*pte), is_swap_pte(*pte), p, addr, 1);
1921 if (ret)
1922 break;
1923 }
1924 }
1925 pte_unmap_unlock(pte - 1, ptl);
1926 if ((!ret || ret == -ENOSPC) && IS_WP_ENGAGE_OP(p) && (addr - start))
1927 uffd_wp_range(walk->mm, vma, start, addr - start, true);
1928
1929 cond_resched();
1930 return ret;
1931 }
1932

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