public inbox for llvm@lists.linux.dev
 help / color / mirror / Atom feed
* Re: [PATCH v2 2/4] mm: Probe for sub-page faults in fault_in_*()
       [not found] <20211201193750.2097885-3-catalin.marinas@arm.com>
@ 2021-12-02  5:10 ` kernel test robot
  0 siblings, 0 replies; only message in thread
From: kernel test robot @ 2021-12-02  5:10 UTC (permalink / raw)
  To: Catalin Marinas; +Cc: llvm, kbuild-all

Hi Catalin,

I love your patch! Yet something to improve:

[auto build test ERROR on powerpc/next]
[also build test ERROR on arm64/for-next/core linus/master v5.16-rc3]
[cannot apply to hnaz-mm/master kdave/for-next next-20211201]
[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]

url:    https://github.com/0day-ci/linux/commits/Catalin-Marinas/Avoid-live-lock-in-fault-in-uaccess-loops-with-sub-page-faults/20211202-034030
base:   https://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux.git next
config: hexagon-randconfig-r045-20211129 (https://download.01.org/0day-ci/archive/20211202/202112021346.8kPeV8ve-lkp@intel.com/config)
compiler: clang version 14.0.0 (https://github.com/llvm/llvm-project 4b553297ef3ee4dc2119d5429adf3072e90fac38)
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/0day-ci/linux/commit/a25817805b46cbc8d2d7e9d36dfa91e5f8dbf5df
        git remote add linux-review https://github.com/0day-ci/linux
        git fetch --no-tags linux-review Catalin-Marinas/Avoid-live-lock-in-fault-in-uaccess-loops-with-sub-page-faults/20211202-034030
        git checkout a25817805b46cbc8d2d7e9d36dfa91e5f8dbf5df
        # save the config file to linux build tree
        mkdir build_dir
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=hexagon SHELL=/bin/bash

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

All errors (new ones prefixed by >>):

>> mm/gup.c:1764:48: error: passing 'const char *' to parameter of type 'void *' discards qualifiers [-Werror,-Wincompatible-pointer-types-discards-qualifiers]
               (min_size && probe_subpage_safe_writeable(uaddr, min_size)))
                                                         ^~~~~
   include/linux/uaccess.h:306:64: note: passing argument to parameter 'uaddr' here
   static inline size_t probe_subpage_safe_writeable(void __user *uaddr,
                                                                  ^
   mm/gup.c:1807:42: error: passing 'const char *' to parameter of type 'void *' discards qualifiers [-Werror,-Wincompatible-pointer-types-discards-qualifiers]
               (min_size && probe_subpage_readable(start, min_size)))
                                                   ^~~~~
   include/linux/uaccess.h:320:58: note: passing argument to parameter 'uaddr' here
   static inline size_t probe_subpage_readable(void __user *uaddr, size_t size)
                                                            ^
   2 errors generated.


vim +1764 mm/gup.c

  1700	
  1701	/*
  1702	 * fault_in_safe_writeable - fault in an address range for writing
  1703	 * @uaddr: start of address range
  1704	 * @size: length of address range
  1705	 * @min_size: minimum size to be faulted in
  1706	 *
  1707	 * Faults in an address range using get_user_pages, i.e., without triggering
  1708	 * hardware page faults.  This is primarily useful when we already know that
  1709	 * some or all of the pages in the address range aren't in memory.
  1710	 *
  1711	 * Other than fault_in_writeable(), this function is non-destructive.
  1712	 *
  1713	 * Note that we don't pin or otherwise hold the pages referenced that we fault
  1714	 * in.  There's no guarantee that they'll stay in memory for any duration of
  1715	 * time.
  1716	 *
  1717	 * Returns the number of bytes not faulted in, like copy_to_user() and
  1718	 * copy_from_user().
  1719	 */
  1720	size_t fault_in_safe_writeable(const char __user *uaddr, size_t size,
  1721				       size_t min_size)
  1722	{
  1723		unsigned long start = (unsigned long)untagged_addr(uaddr);
  1724		unsigned long end, nstart, nend;
  1725		struct mm_struct *mm = current->mm;
  1726		struct vm_area_struct *vma = NULL;
  1727		int locked = 0;
  1728		size_t faulted_in = size;
  1729	
  1730		nstart = start & PAGE_MASK;
  1731		end = PAGE_ALIGN(start + size);
  1732		if (end < nstart)
  1733			end = 0;
  1734		for (; nstart != end; nstart = nend) {
  1735			unsigned long nr_pages;
  1736			long ret;
  1737	
  1738			if (!locked) {
  1739				locked = 1;
  1740				mmap_read_lock(mm);
  1741				vma = find_vma(mm, nstart);
  1742			} else if (nstart >= vma->vm_end)
  1743				vma = vma->vm_next;
  1744			if (!vma || vma->vm_start >= end)
  1745				break;
  1746			nend = end ? min(end, vma->vm_end) : vma->vm_end;
  1747			if (vma->vm_flags & (VM_IO | VM_PFNMAP))
  1748				continue;
  1749			if (nstart < vma->vm_start)
  1750				nstart = vma->vm_start;
  1751			nr_pages = (nend - nstart) / PAGE_SIZE;
  1752			ret = __get_user_pages_locked(mm, nstart, nr_pages,
  1753						      NULL, NULL, &locked,
  1754						      FOLL_TOUCH | FOLL_WRITE);
  1755			if (ret <= 0)
  1756				break;
  1757			nend = nstart + ret * PAGE_SIZE;
  1758		}
  1759		if (locked)
  1760			mmap_read_unlock(mm);
  1761		if (nstart != end)
  1762			faulted_in = min_t(size_t, nstart - start, size);
  1763		if (faulted_in < min_size ||
> 1764		    (min_size && probe_subpage_safe_writeable(uaddr, min_size)))
  1765			return size;
  1766		return size - faulted_in;
  1767	}
  1768	EXPORT_SYMBOL(fault_in_safe_writeable);
  1769	

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2021-12-02  5:11 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
     [not found] <20211201193750.2097885-3-catalin.marinas@arm.com>
2021-12-02  5:10 ` [PATCH v2 2/4] mm: Probe for sub-page faults in fault_in_*() kernel test robot

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox