lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [day] [month] [year] [list]
Message-ID: <201912220142.Zy1GSLrP%lkp@intel.com>
Date:   Sun, 22 Dec 2019 01:22:47 +0800
From:   kbuild test robot <lkp@...el.com>
To:     Christoph Hellwig <hch@....de>
Cc:     kbuild-all@...ts.01.org, linux-kernel@...r.kernel.org,
        Paul Walmsley <paul.walmsley@...ive.com>,
        Anup Patel <anup@...infault.org>
Subject: include/asm-generic/hugetlb.h:7:9: error: incompatible types when
 returning type 'int' but 'pte_t {aka struct <anonymous>}' was expected

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head:   6210469417fd967ec72dea56723593beefeecafb
commit: 6bd33e1ece528f67646db33bf97406b747dafda0 riscv: add nommu support
date:   5 weeks ago
config: riscv-randconfig-a001-20191222 (attached as .config)
compiler: riscv64-linux-gcc (GCC) 7.5.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 6bd33e1ece528f67646db33bf97406b747dafda0
        # save the attached .config to linux build tree
        GCC_VERSION=7.5.0 make.cross ARCH=riscv 

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

All errors (new ones prefixed by >>):

   drivers/gpu/drm/drm_gem.c: In function 'drm_gem_mmap_obj':
>> drivers/gpu/drm/drm_gem.c:1116:22: error: implicit declaration of function 'pgprot_writecombine' [-Werror=implicit-function-declaration]
     vma->vm_page_prot = pgprot_writecombine(vm_get_page_prot(vma->vm_flags));
                         ^~~~~~~~~~~~~~~~~~~
>> drivers/gpu/drm/drm_gem.c:1116:20: error: incompatible types when assigning to type 'pgprot_t {aka struct <anonymous>}' from type 'int'
     vma->vm_page_prot = pgprot_writecombine(vm_get_page_prot(vma->vm_flags));
                       ^
   cc1: some warnings being treated as errors
--
   drivers/gpu/drm/drm_gem_shmem_helper.c: In function 'drm_gem_shmem_vmap_locked':
>> drivers/gpu/drm/drm_gem_shmem_helper.c:261:17: error: implicit declaration of function 'pgprot_writecombine' [-Werror=implicit-function-declaration]
            VM_MAP, pgprot_writecombine(PAGE_KERNEL));
                    ^~~~~~~~~~~~~~~~~~~
>> drivers/gpu/drm/drm_gem_shmem_helper.c:261:17: error: incompatible type for argument 4 of 'vmap'
   In file included from include/asm-generic/io.h:887:0,
                    from arch/riscv/include/asm/io.h:148,
                    from include/linux/scatterlist.h:9,
                    from include/linux/dma-buf.h:18,
                    from drivers/gpu/drm/drm_gem_shmem_helper.c:6:
   include/linux/vmalloc.h:119:14: note: expected 'pgprot_t {aka struct <anonymous>}' but argument is of type 'int'
    extern void *vmap(struct page **pages, unsigned int count,
                 ^~~~
   cc1: some warnings being treated as errors
--
   drivers/gpu/drm/udl/udl_gem.c: In function 'update_vm_cache_attr':
>> drivers/gpu/drm/udl/udl_gem.c:70:4: error: implicit declaration of function 'pgprot_writecombine' [-Werror=implicit-function-declaration]
       pgprot_writecombine(vm_get_page_prot(vma->vm_flags));
       ^~~~~~~~~~~~~~~~~~~
>> drivers/gpu/drm/udl/udl_gem.c:69:21: error: incompatible types when assigning to type 'pgprot_t {aka struct <anonymous>}' from type 'int'
      vma->vm_page_prot =
                        ^
   cc1: some warnings being treated as errors
--
   drivers/gpu/drm/vgem/vgem_drv.c: In function 'vgem_prime_vmap':
>> drivers/gpu/drm/vgem/vgem_drv.c:392:33: error: implicit declaration of function 'pgprot_writecombine' [-Werror=implicit-function-declaration]
     return vmap(pages, n_pages, 0, pgprot_writecombine(PAGE_KERNEL));
                                    ^~~~~~~~~~~~~~~~~~~
>> drivers/gpu/drm/vgem/vgem_drv.c:392:33: error: incompatible type for argument 4 of 'vmap'
   In file included from include/asm-generic/io.h:887:0,
                    from arch/riscv/include/asm/io.h:148,
                    from include/linux/scatterlist.h:9,
                    from include/linux/dma-buf.h:18,
                    from drivers/gpu/drm/vgem/vgem_drv.c:33:
   include/linux/vmalloc.h:119:14: note: expected 'pgprot_t {aka struct <anonymous>}' but argument is of type 'int'
    extern void *vmap(struct page **pages, unsigned int count,
                 ^~~~
   drivers/gpu/drm/vgem/vgem_drv.c: In function 'vgem_prime_mmap':
>> drivers/gpu/drm/vgem/vgem_drv.c:421:20: error: incompatible types when assigning to type 'pgprot_t {aka struct <anonymous>}' from type 'int'
     vma->vm_page_prot = pgprot_writecombine(vm_get_page_prot(vma->vm_flags));
                       ^
   drivers/gpu/drm/vgem/vgem_drv.c: In function 'vgem_prime_vmap':
   drivers/gpu/drm/vgem/vgem_drv.c:393:1: warning: control reaches end of non-void function [-Wreturn-type]
    }
    ^
   cc1: some warnings being treated as errors
--
   In file included from arch/riscv//kernel/riscv_ksyms.c:6:0:
>> arch/riscv//kernel/riscv_ksyms.c:13:15: error: '__asm_copy_to_user' undeclared here (not in a function); did you mean '__copy_to_user'?
    EXPORT_SYMBOL(__asm_copy_to_user);
                  ^
   include/linux/export.h:102:16: note: in definition of macro '___export_symbol_common'
     extern typeof(sym) sym;      \
                   ^~~
   include/linux/export.h:169:34: note: in expansion of macro '___EXPORT_SYMBOL'
    #define __EXPORT_SYMBOL(sym,sec) ___EXPORT_SYMBOL(sym,sec)
                                     ^~~~~~~~~~~~~~~~
   include/linux/export.h:179:29: note: in expansion of macro '__EXPORT_SYMBOL'
    #define EXPORT_SYMBOL(sym)  __EXPORT_SYMBOL(sym, "")
                                ^~~~~~~~~~~~~~~
   arch/riscv//kernel/riscv_ksyms.c:13:1: note: in expansion of macro 'EXPORT_SYMBOL'
    EXPORT_SYMBOL(__asm_copy_to_user);
    ^~~~~~~~~~~~~
>> arch/riscv//kernel/riscv_ksyms.c:14:15: error: '__asm_copy_from_user' undeclared here (not in a function); did you mean '__asm_copy_to_user'?
    EXPORT_SYMBOL(__asm_copy_from_user);
                  ^
   include/linux/export.h:102:16: note: in definition of macro '___export_symbol_common'
     extern typeof(sym) sym;      \
                   ^~~
   include/linux/export.h:169:34: note: in expansion of macro '___EXPORT_SYMBOL'
    #define __EXPORT_SYMBOL(sym,sec) ___EXPORT_SYMBOL(sym,sec)
                                     ^~~~~~~~~~~~~~~~
   include/linux/export.h:179:29: note: in expansion of macro '__EXPORT_SYMBOL'
    #define EXPORT_SYMBOL(sym)  __EXPORT_SYMBOL(sym, "")
                                ^~~~~~~~~~~~~~~
   arch/riscv//kernel/riscv_ksyms.c:14:1: note: in expansion of macro 'EXPORT_SYMBOL'
    EXPORT_SYMBOL(__asm_copy_from_user);
    ^~~~~~~~~~~~~
--
   In file included from arch/riscv/include/asm/hugetlb.h:5:0,
                    from include/linux/hugetlb.h:444,
                    from arch/riscv//mm/hugetlbpage.c:2:
   include/asm-generic/hugetlb.h: In function 'mk_huge_pte':
>> include/asm-generic/hugetlb.h:7:9: error: implicit declaration of function 'mk_pte'; did you mean '__pte'? [-Werror=implicit-function-declaration]
     return mk_pte(page, pgprot);
            ^~~~~~
            __pte
>> include/asm-generic/hugetlb.h:7:9: error: incompatible types when returning type 'int' but 'pte_t {aka struct <anonymous>}' was expected
     return mk_pte(page, pgprot);
            ^~~~~~~~~~~~~~~~~~~~
   include/asm-generic/hugetlb.h: In function 'huge_pte_write':
>> include/asm-generic/hugetlb.h:12:9: error: implicit declaration of function 'pte_write'; did you mean 'pgd_write'? [-Werror=implicit-function-declaration]
     return pte_write(pte);
            ^~~~~~~~~
            pgd_write
   include/asm-generic/hugetlb.h: In function 'huge_pte_dirty':
>> include/asm-generic/hugetlb.h:17:9: error: implicit declaration of function 'pte_dirty'; did you mean 'info_dirty'? [-Werror=implicit-function-declaration]
     return pte_dirty(pte);
            ^~~~~~~~~
            info_dirty
   include/asm-generic/hugetlb.h: In function 'huge_pte_mkwrite':
>> include/asm-generic/hugetlb.h:22:9: error: implicit declaration of function 'pte_mkwrite'; did you mean 'pgd_write'? [-Werror=implicit-function-declaration]
     return pte_mkwrite(pte);
            ^~~~~~~~~~~
            pgd_write
   include/asm-generic/hugetlb.h:22:9: error: incompatible types when returning type 'int' but 'pte_t {aka struct <anonymous>}' was expected
     return pte_mkwrite(pte);
            ^~~~~~~~~~~~~~~~
   include/asm-generic/hugetlb.h: In function 'huge_pte_mkdirty':
>> include/asm-generic/hugetlb.h:27:9: error: implicit declaration of function 'pte_mkdirty'; did you mean 'huge_pte_mkdirty'? [-Werror=implicit-function-declaration]
     return pte_mkdirty(pte);
            ^~~~~~~~~~~
            huge_pte_mkdirty
   include/asm-generic/hugetlb.h:27:9: error: incompatible types when returning type 'int' but 'pte_t {aka struct <anonymous>}' was expected
     return pte_mkdirty(pte);
            ^~~~~~~~~~~~~~~~
   include/asm-generic/hugetlb.h: In function 'huge_pte_modify':
>> include/asm-generic/hugetlb.h:32:9: error: implicit declaration of function 'pte_modify'; did you mean 'lease_modify'? [-Werror=implicit-function-declaration]
     return pte_modify(pte, newprot);
            ^~~~~~~~~~
            lease_modify
   include/asm-generic/hugetlb.h:32:9: error: incompatible types when returning type 'int' but 'pte_t {aka struct <anonymous>}' was expected
     return pte_modify(pte, newprot);
            ^~~~~~~~~~~~~~~~~~~~~~~~
   include/asm-generic/hugetlb.h: In function 'huge_pte_clear':
>> include/asm-generic/hugetlb.h:39:2: error: implicit declaration of function 'pte_clear'; did you mean 'pud_clear'? [-Werror=implicit-function-declaration]
     pte_clear(mm, addr, ptep);
     ^~~~~~~~~
     pud_clear
   include/asm-generic/hugetlb.h: In function 'set_huge_pte_at':
>> include/asm-generic/hugetlb.h:56:2: error: implicit declaration of function 'set_pte_at'; did you mean 'set_huge_pte_at'? [-Werror=implicit-function-declaration]
     set_pte_at(mm, addr, ptep, pte);
     ^~~~~~~~~~
     set_huge_pte_at
   include/asm-generic/hugetlb.h: In function 'huge_ptep_get_and_clear':
>> include/asm-generic/hugetlb.h:64:9: error: implicit declaration of function 'ptep_get_and_clear'; did you mean 'huge_ptep_get_and_clear'? [-Werror=implicit-function-declaration]
     return ptep_get_and_clear(mm, addr, ptep);
            ^~~~~~~~~~~~~~~~~~
            huge_ptep_get_and_clear
   include/asm-generic/hugetlb.h:64:9: error: incompatible types when returning type 'int' but 'pte_t {aka struct <anonymous>}' was expected
     return ptep_get_and_clear(mm, addr, ptep);
            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/asm-generic/hugetlb.h: In function 'huge_ptep_clear_flush':
>> include/asm-generic/hugetlb.h:72:2: error: implicit declaration of function 'ptep_clear_flush'; did you mean 'huge_ptep_clear_flush'? [-Werror=implicit-function-declaration]
     ptep_clear_flush(vma, addr, ptep);
     ^~~~~~~~~~~~~~~~
     huge_ptep_clear_flush
   include/asm-generic/hugetlb.h: In function 'huge_pte_none':
>> include/asm-generic/hugetlb.h:79:9: error: implicit declaration of function 'pte_none'; did you mean 'pud_none'? [-Werror=implicit-function-declaration]
     return pte_none(pte);
            ^~~~~~~~
            pud_none
   include/asm-generic/hugetlb.h: In function 'huge_pte_wrprotect':
>> include/asm-generic/hugetlb.h:86:9: error: implicit declaration of function 'pte_wrprotect'; did you mean 'huge_pte_wrprotect'? [-Werror=implicit-function-declaration]
     return pte_wrprotect(pte);
            ^~~~~~~~~~~~~
            huge_pte_wrprotect
   include/asm-generic/hugetlb.h:86:9: error: incompatible types when returning type 'int' but 'pte_t {aka struct <anonymous>}' was expected
     return pte_wrprotect(pte);
            ^~~~~~~~~~~~~~~~~~
   include/asm-generic/hugetlb.h: In function 'huge_ptep_set_wrprotect':
>> include/asm-generic/hugetlb.h:109:2: error: implicit declaration of function 'ptep_set_wrprotect'; did you mean 'huge_ptep_set_wrprotect'? [-Werror=implicit-function-declaration]
     ptep_set_wrprotect(mm, addr, ptep);
     ^~~~~~~~~~~~~~~~~~
     huge_ptep_set_wrprotect
   include/asm-generic/hugetlb.h: In function 'huge_ptep_set_access_flags':
>> include/asm-generic/hugetlb.h:118:9: error: implicit declaration of function 'ptep_set_access_flags'; did you mean 'huge_ptep_set_access_flags'? [-Werror=implicit-function-declaration]
     return ptep_set_access_flags(vma, addr, ptep, pte, dirty);
            ^~~~~~~~~~~~~~~~~~~~~
            huge_ptep_set_access_flags
   arch/riscv//mm/hugetlbpage.c: In function 'pmd_huge':
>> arch/riscv//mm/hugetlbpage.c:13:9: error: implicit declaration of function 'pmd_present'; did you mean 'pud_present'? [-Werror=implicit-function-declaration]
     return pmd_present(pmd) &&
            ^~~~~~~~~~~
            pud_present
   cc1: some warnings being treated as errors

vim +7 include/asm-generic/hugetlb.h

106c992a5ebef2 Gerald Schaefer 2013-04-29    4  
106c992a5ebef2 Gerald Schaefer 2013-04-29    5  static inline pte_t mk_huge_pte(struct page *page, pgprot_t pgprot)
106c992a5ebef2 Gerald Schaefer 2013-04-29    6  {
106c992a5ebef2 Gerald Schaefer 2013-04-29   @7  	return mk_pte(page, pgprot);
106c992a5ebef2 Gerald Schaefer 2013-04-29    8  }
106c992a5ebef2 Gerald Schaefer 2013-04-29    9  
26794942461f43 David Miller    2013-10-02   10  static inline unsigned long huge_pte_write(pte_t pte)
106c992a5ebef2 Gerald Schaefer 2013-04-29   11  {
106c992a5ebef2 Gerald Schaefer 2013-04-29  @12  	return pte_write(pte);
106c992a5ebef2 Gerald Schaefer 2013-04-29   13  }
106c992a5ebef2 Gerald Schaefer 2013-04-29   14  
26794942461f43 David Miller    2013-10-02   15  static inline unsigned long huge_pte_dirty(pte_t pte)
106c992a5ebef2 Gerald Schaefer 2013-04-29   16  {
106c992a5ebef2 Gerald Schaefer 2013-04-29  @17  	return pte_dirty(pte);
106c992a5ebef2 Gerald Schaefer 2013-04-29   18  }
106c992a5ebef2 Gerald Schaefer 2013-04-29   19  
106c992a5ebef2 Gerald Schaefer 2013-04-29   20  static inline pte_t huge_pte_mkwrite(pte_t pte)
106c992a5ebef2 Gerald Schaefer 2013-04-29   21  {
106c992a5ebef2 Gerald Schaefer 2013-04-29  @22  	return pte_mkwrite(pte);
106c992a5ebef2 Gerald Schaefer 2013-04-29   23  }
106c992a5ebef2 Gerald Schaefer 2013-04-29   24  
106c992a5ebef2 Gerald Schaefer 2013-04-29   25  static inline pte_t huge_pte_mkdirty(pte_t pte)
106c992a5ebef2 Gerald Schaefer 2013-04-29   26  {
106c992a5ebef2 Gerald Schaefer 2013-04-29  @27  	return pte_mkdirty(pte);
106c992a5ebef2 Gerald Schaefer 2013-04-29   28  }
106c992a5ebef2 Gerald Schaefer 2013-04-29   29  
106c992a5ebef2 Gerald Schaefer 2013-04-29   30  static inline pte_t huge_pte_modify(pte_t pte, pgprot_t newprot)
106c992a5ebef2 Gerald Schaefer 2013-04-29   31  {
106c992a5ebef2 Gerald Schaefer 2013-04-29  @32  	return pte_modify(pte, newprot);
106c992a5ebef2 Gerald Schaefer 2013-04-29   33  }
106c992a5ebef2 Gerald Schaefer 2013-04-29   34  
d018498ccc9277 Alexandre Ghiti 2018-10-26   35  #ifndef __HAVE_ARCH_HUGE_PTE_CLEAR
106c992a5ebef2 Gerald Schaefer 2013-04-29   36  static inline void huge_pte_clear(struct mm_struct *mm, unsigned long addr,
9386fac34c7cbe Punit Agrawal   2017-07-06   37  		    pte_t *ptep, unsigned long sz)
106c992a5ebef2 Gerald Schaefer 2013-04-29   38  {
106c992a5ebef2 Gerald Schaefer 2013-04-29  @39  	pte_clear(mm, addr, ptep);
106c992a5ebef2 Gerald Schaefer 2013-04-29   40  }
9386fac34c7cbe Punit Agrawal   2017-07-06   41  #endif
106c992a5ebef2 Gerald Schaefer 2013-04-29   42  
1e5f50fc9d0a65 Alexandre Ghiti 2018-10-26   43  #ifndef __HAVE_ARCH_HUGETLB_FREE_PGD_RANGE
1e5f50fc9d0a65 Alexandre Ghiti 2018-10-26   44  static inline void hugetlb_free_pgd_range(struct mmu_gather *tlb,
1e5f50fc9d0a65 Alexandre Ghiti 2018-10-26   45  		unsigned long addr, unsigned long end,
1e5f50fc9d0a65 Alexandre Ghiti 2018-10-26   46  		unsigned long floor, unsigned long ceiling)
1e5f50fc9d0a65 Alexandre Ghiti 2018-10-26   47  {
1e5f50fc9d0a65 Alexandre Ghiti 2018-10-26   48  	free_pgd_range(tlb, addr, end, floor, ceiling);
1e5f50fc9d0a65 Alexandre Ghiti 2018-10-26   49  }
cea685d556330b Alexandre Ghiti 2018-10-26   50  #endif
1e5f50fc9d0a65 Alexandre Ghiti 2018-10-26   51  
cea685d556330b Alexandre Ghiti 2018-10-26   52  #ifndef __HAVE_ARCH_HUGE_SET_HUGE_PTE_AT
cea685d556330b Alexandre Ghiti 2018-10-26   53  static inline void set_huge_pte_at(struct mm_struct *mm, unsigned long addr,
cea685d556330b Alexandre Ghiti 2018-10-26   54  		pte_t *ptep, pte_t pte)
cea685d556330b Alexandre Ghiti 2018-10-26   55  {
cea685d556330b Alexandre Ghiti 2018-10-26  @56  	set_pte_at(mm, addr, ptep, pte);
cea685d556330b Alexandre Ghiti 2018-10-26   57  }
1e5f50fc9d0a65 Alexandre Ghiti 2018-10-26   58  #endif
1e5f50fc9d0a65 Alexandre Ghiti 2018-10-26   59  
a4d838536c6e5c Alexandre Ghiti 2018-10-26   60  #ifndef __HAVE_ARCH_HUGE_PTEP_GET_AND_CLEAR
a4d838536c6e5c Alexandre Ghiti 2018-10-26   61  static inline pte_t huge_ptep_get_and_clear(struct mm_struct *mm,
a4d838536c6e5c Alexandre Ghiti 2018-10-26   62  		unsigned long addr, pte_t *ptep)
a4d838536c6e5c Alexandre Ghiti 2018-10-26   63  {
a4d838536c6e5c Alexandre Ghiti 2018-10-26  @64  	return ptep_get_and_clear(mm, addr, ptep);
a4d838536c6e5c Alexandre Ghiti 2018-10-26   65  }
a4d838536c6e5c Alexandre Ghiti 2018-10-26   66  #endif
a4d838536c6e5c Alexandre Ghiti 2018-10-26   67  
fe632225bdbd49 Alexandre Ghiti 2018-10-26   68  #ifndef __HAVE_ARCH_HUGE_PTEP_CLEAR_FLUSH
fe632225bdbd49 Alexandre Ghiti 2018-10-26   69  static inline void huge_ptep_clear_flush(struct vm_area_struct *vma,
fe632225bdbd49 Alexandre Ghiti 2018-10-26   70  		unsigned long addr, pte_t *ptep)
fe632225bdbd49 Alexandre Ghiti 2018-10-26   71  {
fe632225bdbd49 Alexandre Ghiti 2018-10-26  @72  	ptep_clear_flush(vma, addr, ptep);
fe632225bdbd49 Alexandre Ghiti 2018-10-26   73  }
fe632225bdbd49 Alexandre Ghiti 2018-10-26   74  #endif
fe632225bdbd49 Alexandre Ghiti 2018-10-26   75  
cae72abc1af0c1 Alexandre Ghiti 2018-10-26   76  #ifndef __HAVE_ARCH_HUGE_PTE_NONE
cae72abc1af0c1 Alexandre Ghiti 2018-10-26   77  static inline int huge_pte_none(pte_t pte)
cae72abc1af0c1 Alexandre Ghiti 2018-10-26   78  {
cae72abc1af0c1 Alexandre Ghiti 2018-10-26  @79  	return pte_none(pte);
cae72abc1af0c1 Alexandre Ghiti 2018-10-26   80  }
cae72abc1af0c1 Alexandre Ghiti 2018-10-26   81  #endif
cae72abc1af0c1 Alexandre Ghiti 2018-10-26   82  
c4916a008665a6 Alexandre Ghiti 2018-10-26   83  #ifndef __HAVE_ARCH_HUGE_PTE_WRPROTECT
c4916a008665a6 Alexandre Ghiti 2018-10-26   84  static inline pte_t huge_pte_wrprotect(pte_t pte)
c4916a008665a6 Alexandre Ghiti 2018-10-26   85  {
c4916a008665a6 Alexandre Ghiti 2018-10-26  @86  	return pte_wrprotect(pte);
c4916a008665a6 Alexandre Ghiti 2018-10-26   87  }
c4916a008665a6 Alexandre Ghiti 2018-10-26   88  #endif
c4916a008665a6 Alexandre Ghiti 2018-10-26   89  
78d6e4e8ea8700 Alexandre Ghiti 2018-10-26   90  #ifndef __HAVE_ARCH_PREPARE_HUGEPAGE_RANGE
78d6e4e8ea8700 Alexandre Ghiti 2018-10-26   91  static inline int prepare_hugepage_range(struct file *file,
78d6e4e8ea8700 Alexandre Ghiti 2018-10-26   92  		unsigned long addr, unsigned long len)
78d6e4e8ea8700 Alexandre Ghiti 2018-10-26   93  {
78d6e4e8ea8700 Alexandre Ghiti 2018-10-26   94  	struct hstate *h = hstate_file(file);
78d6e4e8ea8700 Alexandre Ghiti 2018-10-26   95  
78d6e4e8ea8700 Alexandre Ghiti 2018-10-26   96  	if (len & ~huge_page_mask(h))
78d6e4e8ea8700 Alexandre Ghiti 2018-10-26   97  		return -EINVAL;
78d6e4e8ea8700 Alexandre Ghiti 2018-10-26   98  	if (addr & ~huge_page_mask(h))
78d6e4e8ea8700 Alexandre Ghiti 2018-10-26   99  		return -EINVAL;
78d6e4e8ea8700 Alexandre Ghiti 2018-10-26  100  
78d6e4e8ea8700 Alexandre Ghiti 2018-10-26  101  	return 0;
78d6e4e8ea8700 Alexandre Ghiti 2018-10-26  102  }
78d6e4e8ea8700 Alexandre Ghiti 2018-10-26  103  #endif
78d6e4e8ea8700 Alexandre Ghiti 2018-10-26  104  
8e581d433bf796 Alexandre Ghiti 2018-10-26  105  #ifndef __HAVE_ARCH_HUGE_PTEP_SET_WRPROTECT
8e581d433bf796 Alexandre Ghiti 2018-10-26  106  static inline void huge_ptep_set_wrprotect(struct mm_struct *mm,
8e581d433bf796 Alexandre Ghiti 2018-10-26  107  		unsigned long addr, pte_t *ptep)
8e581d433bf796 Alexandre Ghiti 2018-10-26  108  {
8e581d433bf796 Alexandre Ghiti 2018-10-26 @109  	ptep_set_wrprotect(mm, addr, ptep);
8e581d433bf796 Alexandre Ghiti 2018-10-26  110  }
8e581d433bf796 Alexandre Ghiti 2018-10-26  111  #endif
8e581d433bf796 Alexandre Ghiti 2018-10-26  112  
facf6d5b8b6c42 Alexandre Ghiti 2018-10-26  113  #ifndef __HAVE_ARCH_HUGE_PTEP_SET_ACCESS_FLAGS
facf6d5b8b6c42 Alexandre Ghiti 2018-10-26  114  static inline int huge_ptep_set_access_flags(struct vm_area_struct *vma,
facf6d5b8b6c42 Alexandre Ghiti 2018-10-26  115  		unsigned long addr, pte_t *ptep,
facf6d5b8b6c42 Alexandre Ghiti 2018-10-26  116  		pte_t pte, int dirty)
facf6d5b8b6c42 Alexandre Ghiti 2018-10-26  117  {
facf6d5b8b6c42 Alexandre Ghiti 2018-10-26 @118  	return ptep_set_access_flags(vma, addr, ptep, pte, dirty);
facf6d5b8b6c42 Alexandre Ghiti 2018-10-26  119  }
facf6d5b8b6c42 Alexandre Ghiti 2018-10-26  120  #endif
facf6d5b8b6c42 Alexandre Ghiti 2018-10-26  121  

:::::: The code at line 7 was first introduced by commit
:::::: 106c992a5ebef28193cf5958e49ceff5e4aebb04 mm/hugetlb: add more arch-defined huge_pte functions

:::::: TO: Gerald Schaefer <gerald.schaefer@...ibm.com>
:::::: CC: Linus Torvalds <torvalds@...ux-foundation.org>

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

Download attachment ".config.gz" of type "application/gzip" (24289 bytes)

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ