All of lore.kernel.org
 help / color / mirror / Atom feed
* [linux-next:master 13877/13946] mm/frame_vector.c:49:30: error: expected ')' before ';' token
@ 2019-09-26 18:57 kbuild test robot
  0 siblings, 0 replies; only message in thread
From: kbuild test robot @ 2019-09-26 18:57 UTC (permalink / raw)
  To: Andrey Konovalov
  Cc: kbuild-all, Mark Brown, Khalid Aziz, Vincenzo Frascino,
	Kees Cook, Andrew Morton, Linux Memory Management List

[-- Attachment #1: Type: text/plain, Size: 5744 bytes --]

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git master
head:   d47175169c28eedd2cc2ab8c01f38764cb0269cc
commit: aeb71ff8cfaf27810add3cef8068233cfc08ad2a [13877/13946] mm: untag user pointers in get_vaddr_frames
config: sparc64-allmodconfig (attached as .config)
compiler: sparc64-linux-gcc (GCC) 7.4.0
reproduce:
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        git checkout aeb71ff8cfaf27810add3cef8068233cfc08ad2a
        # save the attached .config to linux build tree
        GCC_VERSION=7.4.0 make.cross ARCH=sparc64 

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

All error/warnings (new ones prefixed by >>):

   mm/frame_vector.c: In function 'get_vaddr_frames':
>> mm/frame_vector.c:49:30: error: expected ')' before ';' token
     start = untagged_addr(start);
                                 ^
>> mm/frame_vector.c:111:1: error: expected ';' before '}' token
    }
    ^
   mm/frame_vector.c:41:6: warning: unused variable 'locked' [-Wunused-variable]
     int locked;
         ^~~~~~
   mm/frame_vector.c:40:6: warning: unused variable 'err' [-Wunused-variable]
     int err;
         ^~~
   mm/frame_vector.c:39:6: warning: unused variable 'ret' [-Wunused-variable]
     int ret = 0;
         ^~~
   mm/frame_vector.c:38:25: warning: unused variable 'vma' [-Wunused-variable]
     struct vm_area_struct *vma;
                            ^~~
   mm/frame_vector.c:37:20: warning: unused variable 'mm' [-Wunused-variable]
     struct mm_struct *mm = current->mm;
                       ^~
>> mm/frame_vector.c:111:1: warning: control reaches end of non-void function [-Wreturn-type]
    }
    ^

vim +49 mm/frame_vector.c

    10	
    11	/**
    12	 * get_vaddr_frames() - map virtual addresses to pfns
    13	 * @start:	starting user address
    14	 * @nr_frames:	number of pages / pfns from start to map
    15	 * @gup_flags:	flags modifying lookup behaviour
    16	 * @vec:	structure which receives pages / pfns of the addresses mapped.
    17	 *		It should have space for at least nr_frames entries.
    18	 *
    19	 * This function maps virtual addresses from @start and fills @vec structure
    20	 * with page frame numbers or page pointers to corresponding pages (choice
    21	 * depends on the type of the vma underlying the virtual address). If @start
    22	 * belongs to a normal vma, the function grabs reference to each of the pages
    23	 * to pin them in memory. If @start belongs to VM_IO | VM_PFNMAP vma, we don't
    24	 * touch page structures and the caller must make sure pfns aren't reused for
    25	 * anything else while he is using them.
    26	 *
    27	 * The function returns number of pages mapped which may be less than
    28	 * @nr_frames. In particular we stop mapping if there are more vmas of
    29	 * different type underlying the specified range of virtual addresses.
    30	 * When the function isn't able to map a single page, it returns error.
    31	 *
    32	 * This function takes care of grabbing mmap_sem as necessary.
    33	 */
    34	int get_vaddr_frames(unsigned long start, unsigned int nr_frames,
    35			     unsigned int gup_flags, struct frame_vector *vec)
    36	{
    37		struct mm_struct *mm = current->mm;
    38		struct vm_area_struct *vma;
  > 39		int ret = 0;
    40		int err;
    41		int locked;
    42	
    43		if (nr_frames == 0)
    44			return 0;
    45	
    46		if (WARN_ON_ONCE(nr_frames > vec->nr_allocated))
    47			nr_frames = vec->nr_allocated;
    48	
  > 49		start = untagged_addr(start);
    50	
    51		down_read(&mm->mmap_sem);
    52		locked = 1;
    53		vma = find_vma_intersection(mm, start, start + 1);
    54		if (!vma) {
    55			ret = -EFAULT;
    56			goto out;
    57		}
    58	
    59		/*
    60		 * While get_vaddr_frames() could be used for transient (kernel
    61		 * controlled lifetime) pinning of memory pages all current
    62		 * users establish long term (userspace controlled lifetime)
    63		 * page pinning. Treat get_vaddr_frames() like
    64		 * get_user_pages_longterm() and disallow it for filesystem-dax
    65		 * mappings.
    66		 */
    67		if (vma_is_fsdax(vma)) {
    68			ret = -EOPNOTSUPP;
    69			goto out;
    70		}
    71	
    72		if (!(vma->vm_flags & (VM_IO | VM_PFNMAP))) {
    73			vec->got_ref = true;
    74			vec->is_pfns = false;
    75			ret = get_user_pages_locked(start, nr_frames,
    76				gup_flags, (struct page **)(vec->ptrs), &locked);
    77			goto out;
    78		}
    79	
    80		vec->got_ref = false;
    81		vec->is_pfns = true;
    82		do {
    83			unsigned long *nums = frame_vector_pfns(vec);
    84	
    85			while (ret < nr_frames && start + PAGE_SIZE <= vma->vm_end) {
    86				err = follow_pfn(vma, start, &nums[ret]);
    87				if (err) {
    88					if (ret == 0)
    89						ret = err;
    90					goto out;
    91				}
    92				start += PAGE_SIZE;
    93				ret++;
    94			}
    95			/*
    96			 * We stop if we have enough pages or if VMA doesn't completely
    97			 * cover the tail page.
    98			 */
    99			if (ret >= nr_frames || start < vma->vm_end)
   100				break;
   101			vma = find_vma_intersection(mm, start, start + 1);
   102		} while (vma && vma->vm_flags & (VM_IO | VM_PFNMAP));
   103	out:
   104		if (locked)
   105			up_read(&mm->mmap_sem);
   106		if (!ret)
   107			ret = -EFAULT;
   108		if (ret > 0)
   109			vec->nr_frames = ret;
   110		return ret;
 > 111	}
   112	EXPORT_SYMBOL(get_vaddr_frames);
   113	

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation

[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 59052 bytes --]

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

only message in thread, other threads:[~2019-09-26 18:58 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-09-26 18:57 [linux-next:master 13877/13946] mm/frame_vector.c:49:30: error: expected ')' before ';' token kbuild test robot

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.