All of lore.kernel.org
 help / color / mirror / Atom feed
* [rcu:mmap_sem.2017.08.09a 6/16] mm/mmap.c:162:1: error: type defaults to 'int' in declaration of 'DEFINE_SRCU'
@ 2017-08-09 22:09 kbuild test robot
  2017-08-09 22:25 ` Paul E. McKenney
  0 siblings, 1 reply; 2+ messages in thread
From: kbuild test robot @ 2017-08-09 22:09 UTC (permalink / raw)
  To: Peter Zijlstra; +Cc: kbuild-all, linux-kernel, Paul E. McKenney, Laurent Dufour

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

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu.git mmap_sem.2017.08.09a
head:   39782fbd9252a3ace9b49a55f4dd2a41a6ced31f
commit: 1b801585f6b03276db9722dc725a50ca11439467 [6/16] mm: RCU free VMAs
config: parisc-allnoconfig (attached as .config)
compiler: hppa-linux-gnu-gcc (Debian 6.1.1-9) 6.1.1 20160705
reproduce:
        wget https://raw.githubusercontent.com/01org/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        git checkout 1b801585f6b03276db9722dc725a50ca11439467
        # save the attached .config to linux build tree
        make.cross ARCH=parisc 

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

   In file included from mm/mmap.c:53:0:
   mm/internal.h: In function 'vma_has_changed':
   mm/internal.h:59:26: error: 'struct vm_fault' has no member named 'sequence'
     return ret || seq != vmf->sequence;
                             ^~
   mm/mmap.c: At top level:
>> mm/mmap.c:162:1: warning: data definition has no type or storage class
    DEFINE_SRCU(vma_srcu);
    ^~~~~~~~~~~
>> mm/mmap.c:162:1: error: type defaults to 'int' in declaration of 'DEFINE_SRCU' [-Werror=implicit-int]
>> mm/mmap.c:162:1: warning: parameter names (without types) in function declaration
   cc1: some warnings being treated as errors

vim +162 mm/mmap.c

    52	
  > 53	#include "internal.h"
    54	
    55	#ifndef arch_mmap_check
    56	#define arch_mmap_check(addr, len, flags)	(0)
    57	#endif
    58	
    59	#ifdef CONFIG_HAVE_ARCH_MMAP_RND_BITS
    60	const int mmap_rnd_bits_min = CONFIG_ARCH_MMAP_RND_BITS_MIN;
    61	const int mmap_rnd_bits_max = CONFIG_ARCH_MMAP_RND_BITS_MAX;
    62	int mmap_rnd_bits __read_mostly = CONFIG_ARCH_MMAP_RND_BITS;
    63	#endif
    64	#ifdef CONFIG_HAVE_ARCH_MMAP_RND_COMPAT_BITS
    65	const int mmap_rnd_compat_bits_min = CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MIN;
    66	const int mmap_rnd_compat_bits_max = CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MAX;
    67	int mmap_rnd_compat_bits __read_mostly = CONFIG_ARCH_MMAP_RND_COMPAT_BITS;
    68	#endif
    69	
    70	static bool ignore_rlimit_data;
    71	core_param(ignore_rlimit_data, ignore_rlimit_data, bool, 0644);
    72	
    73	static void unmap_region(struct mm_struct *mm,
    74			struct vm_area_struct *vma, struct vm_area_struct *prev,
    75			unsigned long start, unsigned long end);
    76	
    77	/* description of effects of mapping type and prot in current implementation.
    78	 * this is due to the limited x86 page protection hardware.  The expected
    79	 * behavior is in parens:
    80	 *
    81	 * map_type	prot
    82	 *		PROT_NONE	PROT_READ	PROT_WRITE	PROT_EXEC
    83	 * MAP_SHARED	r: (no) no	r: (yes) yes	r: (no) yes	r: (no) yes
    84	 *		w: (no) no	w: (no) no	w: (yes) yes	w: (no) no
    85	 *		x: (no) no	x: (no) yes	x: (no) yes	x: (yes) yes
    86	 *
    87	 * MAP_PRIVATE	r: (no) no	r: (yes) yes	r: (no) yes	r: (no) yes
    88	 *		w: (no) no	w: (no) no	w: (copy) copy	w: (no) no
    89	 *		x: (no) no	x: (no) yes	x: (no) yes	x: (yes) yes
    90	 *
    91	 * On arm64, PROT_EXEC has the following behaviour for both MAP_SHARED and
    92	 * MAP_PRIVATE:
    93	 *								r: (no) no
    94	 *								w: (no) no
    95	 *								x: (yes) yes
    96	 */
    97	pgprot_t protection_map[16] __ro_after_init = {
    98		__P000, __P001, __P010, __P011, __P100, __P101, __P110, __P111,
    99		__S000, __S001, __S010, __S011, __S100, __S101, __S110, __S111
   100	};
   101	
   102	pgprot_t vm_get_page_prot(unsigned long vm_flags)
   103	{
   104		return __pgprot(pgprot_val(protection_map[vm_flags &
   105					(VM_READ|VM_WRITE|VM_EXEC|VM_SHARED)]) |
   106				pgprot_val(arch_vm_get_page_prot(vm_flags)));
   107	}
   108	EXPORT_SYMBOL(vm_get_page_prot);
   109	
   110	static pgprot_t vm_pgprot_modify(pgprot_t oldprot, unsigned long vm_flags)
   111	{
   112		return pgprot_modify(oldprot, vm_get_page_prot(vm_flags));
   113	}
   114	
   115	/* Update vma->vm_page_prot to reflect vma->vm_flags. */
   116	void vma_set_page_prot(struct vm_area_struct *vma)
   117	{
   118		unsigned long vm_flags = vma->vm_flags;
   119		pgprot_t vm_page_prot;
   120	
   121		vm_page_prot = vm_pgprot_modify(vma->vm_page_prot, vm_flags);
   122		if (vma_wants_writenotify(vma, vm_page_prot)) {
   123			vm_flags &= ~VM_SHARED;
   124			vm_page_prot = vm_pgprot_modify(vm_page_prot, vm_flags);
   125		}
   126		/* remove_protection_ptes reads vma->vm_page_prot without mmap_sem */
   127		WRITE_ONCE(vma->vm_page_prot, vm_page_prot);
   128	}
   129	
   130	/*
   131	 * Requires inode->i_mapping->i_mmap_rwsem
   132	 */
   133	static void __remove_shared_vm_struct(struct vm_area_struct *vma,
   134			struct file *file, struct address_space *mapping)
   135	{
   136		if (vma->vm_flags & VM_DENYWRITE)
   137			atomic_inc(&file_inode(file)->i_writecount);
   138		if (vma->vm_flags & VM_SHARED)
   139			mapping_unmap_writable(mapping);
   140	
   141		flush_dcache_mmap_lock(mapping);
   142		vma_interval_tree_remove(vma, &mapping->i_mmap);
   143		flush_dcache_mmap_unlock(mapping);
   144	}
   145	
   146	/*
   147	 * Unlink a file-based vm structure from its interval tree, to hide
   148	 * vma from rmap and vmtruncate before freeing its page tables.
   149	 */
   150	void unlink_file_vma(struct vm_area_struct *vma)
   151	{
   152		struct file *file = vma->vm_file;
   153	
   154		if (file) {
   155			struct address_space *mapping = file->f_mapping;
   156			i_mmap_lock_write(mapping);
   157			__remove_shared_vm_struct(vma, file, mapping);
   158			i_mmap_unlock_write(mapping);
   159		}
   160	}
   161	
 > 162	DEFINE_SRCU(vma_srcu);
   163	

---
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: 4969 bytes --]

^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: [rcu:mmap_sem.2017.08.09a 6/16] mm/mmap.c:162:1: error: type defaults to 'int' in declaration of 'DEFINE_SRCU'
  2017-08-09 22:09 [rcu:mmap_sem.2017.08.09a 6/16] mm/mmap.c:162:1: error: type defaults to 'int' in declaration of 'DEFINE_SRCU' kbuild test robot
@ 2017-08-09 22:25 ` Paul E. McKenney
  0 siblings, 0 replies; 2+ messages in thread
From: Paul E. McKenney @ 2017-08-09 22:25 UTC (permalink / raw)
  To: kbuild test robot
  Cc: Peter Zijlstra, kbuild-all, linux-kernel, Laurent Dufour

On Thu, Aug 10, 2017 at 06:09:22AM +0800, kbuild test robot wrote:
> tree:   https://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu.git mmap_sem.2017.08.09a
> head:   39782fbd9252a3ace9b49a55f4dd2a41a6ced31f
> commit: 1b801585f6b03276db9722dc725a50ca11439467 [6/16] mm: RCU free VMAs
> config: parisc-allnoconfig (attached as .config)
> compiler: hppa-linux-gnu-gcc (Debian 6.1.1-9) 6.1.1 20160705
> reproduce:
>         wget https://raw.githubusercontent.com/01org/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
>         chmod +x ~/bin/make.cross
>         git checkout 1b801585f6b03276db9722dc725a50ca11439467
>         # save the attached .config to linux build tree
>         make.cross ARCH=parisc 
> 
> All error/warnings (new ones prefixed by >>):
> 
>    In file included from mm/mmap.c:53:0:
>    mm/internal.h: In function 'vma_has_changed':
>    mm/internal.h:59:26: error: 'struct vm_fault' has no member named 'sequence'
>      return ret || seq != vmf->sequence;
>                              ^~
>    mm/mmap.c: At top level:
> >> mm/mmap.c:162:1: warning: data definition has no type or storage class
>     DEFINE_SRCU(vma_srcu);
>     ^~~~~~~~~~~

I am going to guess that this is because hppa does not select SRCU?

							Thanx, Paul

> >> mm/mmap.c:162:1: error: type defaults to 'int' in declaration of 'DEFINE_SRCU' [-Werror=implicit-int]
> >> mm/mmap.c:162:1: warning: parameter names (without types) in function declaration
>    cc1: some warnings being treated as errors
> 
> vim +162 mm/mmap.c
> 
>     52	
>   > 53	#include "internal.h"
>     54	
>     55	#ifndef arch_mmap_check
>     56	#define arch_mmap_check(addr, len, flags)	(0)
>     57	#endif
>     58	
>     59	#ifdef CONFIG_HAVE_ARCH_MMAP_RND_BITS
>     60	const int mmap_rnd_bits_min = CONFIG_ARCH_MMAP_RND_BITS_MIN;
>     61	const int mmap_rnd_bits_max = CONFIG_ARCH_MMAP_RND_BITS_MAX;
>     62	int mmap_rnd_bits __read_mostly = CONFIG_ARCH_MMAP_RND_BITS;
>     63	#endif
>     64	#ifdef CONFIG_HAVE_ARCH_MMAP_RND_COMPAT_BITS
>     65	const int mmap_rnd_compat_bits_min = CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MIN;
>     66	const int mmap_rnd_compat_bits_max = CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MAX;
>     67	int mmap_rnd_compat_bits __read_mostly = CONFIG_ARCH_MMAP_RND_COMPAT_BITS;
>     68	#endif
>     69	
>     70	static bool ignore_rlimit_data;
>     71	core_param(ignore_rlimit_data, ignore_rlimit_data, bool, 0644);
>     72	
>     73	static void unmap_region(struct mm_struct *mm,
>     74			struct vm_area_struct *vma, struct vm_area_struct *prev,
>     75			unsigned long start, unsigned long end);
>     76	
>     77	/* description of effects of mapping type and prot in current implementation.
>     78	 * this is due to the limited x86 page protection hardware.  The expected
>     79	 * behavior is in parens:
>     80	 *
>     81	 * map_type	prot
>     82	 *		PROT_NONE	PROT_READ	PROT_WRITE	PROT_EXEC
>     83	 * MAP_SHARED	r: (no) no	r: (yes) yes	r: (no) yes	r: (no) yes
>     84	 *		w: (no) no	w: (no) no	w: (yes) yes	w: (no) no
>     85	 *		x: (no) no	x: (no) yes	x: (no) yes	x: (yes) yes
>     86	 *
>     87	 * MAP_PRIVATE	r: (no) no	r: (yes) yes	r: (no) yes	r: (no) yes
>     88	 *		w: (no) no	w: (no) no	w: (copy) copy	w: (no) no
>     89	 *		x: (no) no	x: (no) yes	x: (no) yes	x: (yes) yes
>     90	 *
>     91	 * On arm64, PROT_EXEC has the following behaviour for both MAP_SHARED and
>     92	 * MAP_PRIVATE:
>     93	 *								r: (no) no
>     94	 *								w: (no) no
>     95	 *								x: (yes) yes
>     96	 */
>     97	pgprot_t protection_map[16] __ro_after_init = {
>     98		__P000, __P001, __P010, __P011, __P100, __P101, __P110, __P111,
>     99		__S000, __S001, __S010, __S011, __S100, __S101, __S110, __S111
>    100	};
>    101	
>    102	pgprot_t vm_get_page_prot(unsigned long vm_flags)
>    103	{
>    104		return __pgprot(pgprot_val(protection_map[vm_flags &
>    105					(VM_READ|VM_WRITE|VM_EXEC|VM_SHARED)]) |
>    106				pgprot_val(arch_vm_get_page_prot(vm_flags)));
>    107	}
>    108	EXPORT_SYMBOL(vm_get_page_prot);
>    109	
>    110	static pgprot_t vm_pgprot_modify(pgprot_t oldprot, unsigned long vm_flags)
>    111	{
>    112		return pgprot_modify(oldprot, vm_get_page_prot(vm_flags));
>    113	}
>    114	
>    115	/* Update vma->vm_page_prot to reflect vma->vm_flags. */
>    116	void vma_set_page_prot(struct vm_area_struct *vma)
>    117	{
>    118		unsigned long vm_flags = vma->vm_flags;
>    119		pgprot_t vm_page_prot;
>    120	
>    121		vm_page_prot = vm_pgprot_modify(vma->vm_page_prot, vm_flags);
>    122		if (vma_wants_writenotify(vma, vm_page_prot)) {
>    123			vm_flags &= ~VM_SHARED;
>    124			vm_page_prot = vm_pgprot_modify(vm_page_prot, vm_flags);
>    125		}
>    126		/* remove_protection_ptes reads vma->vm_page_prot without mmap_sem */
>    127		WRITE_ONCE(vma->vm_page_prot, vm_page_prot);
>    128	}
>    129	
>    130	/*
>    131	 * Requires inode->i_mapping->i_mmap_rwsem
>    132	 */
>    133	static void __remove_shared_vm_struct(struct vm_area_struct *vma,
>    134			struct file *file, struct address_space *mapping)
>    135	{
>    136		if (vma->vm_flags & VM_DENYWRITE)
>    137			atomic_inc(&file_inode(file)->i_writecount);
>    138		if (vma->vm_flags & VM_SHARED)
>    139			mapping_unmap_writable(mapping);
>    140	
>    141		flush_dcache_mmap_lock(mapping);
>    142		vma_interval_tree_remove(vma, &mapping->i_mmap);
>    143		flush_dcache_mmap_unlock(mapping);
>    144	}
>    145	
>    146	/*
>    147	 * Unlink a file-based vm structure from its interval tree, to hide
>    148	 * vma from rmap and vmtruncate before freeing its page tables.
>    149	 */
>    150	void unlink_file_vma(struct vm_area_struct *vma)
>    151	{
>    152		struct file *file = vma->vm_file;
>    153	
>    154		if (file) {
>    155			struct address_space *mapping = file->f_mapping;
>    156			i_mmap_lock_write(mapping);
>    157			__remove_shared_vm_struct(vma, file, mapping);
>    158			i_mmap_unlock_write(mapping);
>    159		}
>    160	}
>    161	
>  > 162	DEFINE_SRCU(vma_srcu);
>    163	
> 
> ---
> 0-DAY kernel test infrastructure                Open Source Technology Center
> https://lists.01.org/pipermail/kbuild-all                   Intel Corporation

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2017-08-09 22:25 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-08-09 22:09 [rcu:mmap_sem.2017.08.09a 6/16] mm/mmap.c:162:1: error: type defaults to 'int' in declaration of 'DEFINE_SRCU' kbuild test robot
2017-08-09 22:25 ` Paul E. McKenney

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.