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/userfaul... 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.c... 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@i...) 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/11677b6b7fda958031115ea40aa219... 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@intel.com
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