All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Paul E. McKenney" <paulmck@linux.vnet.ibm.com>
To: kbuild test robot <fengguang.wu@intel.com>
Cc: Peter Zijlstra <peterz@infradead.org>,
	kbuild-all@01.org, linux-kernel@vger.kernel.org,
	Laurent Dufour <ldufour@linux.vnet.ibm.com>
Subject: Re: [rcu:mmap_sem.2017.08.09a 6/16] mm/mmap.c:162:1: error: type defaults to 'int' in declaration of 'DEFINE_SRCU'
Date: Wed, 9 Aug 2017 15:25:29 -0700	[thread overview]
Message-ID: <20170809222529.GN3730@linux.vnet.ibm.com> (raw)
In-Reply-To: <201708100620.qL0NWH2U%fengguang.wu@intel.com>

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

      reply	other threads:[~2017-08-09 22:25 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
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 message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20170809222529.GN3730@linux.vnet.ibm.com \
    --to=paulmck@linux.vnet.ibm.com \
    --cc=fengguang.wu@intel.com \
    --cc=kbuild-all@01.org \
    --cc=ldufour@linux.vnet.ibm.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=peterz@infradead.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.