Re: [rcu:mmap_sem.2017.08.09a 6/16] mm/internal.h:59:26: error: 'struct vm_fault' has no member named 'sequence'
From: Laurent Dufour
Date: Thu Aug 10 2017 - 04:43:25 EST
On 09/08/2017 23:47, 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: i386-tinyconfig (attached as .config)
> compiler: gcc-6 (Debian 6.2.0-3) 6.2.0 20160901
> reproduce:
> git checkout 1b801585f6b03276db9722dc725a50ca11439467
> # save the attached .config to linux build tree
> make ARCH=i386
>
> Note: the rcu/mmap_sem.2017.08.09a HEAD 39782fbd9252a3ace9b49a55f4dd2a41a6ced31f builds fine.
> It only hurts bisectibility.
>
> All errors (new ones prefixed by >>):
>
> In file included from mm/filemap.c:39: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;
> ^~
> --
> In file included from lib/vsprintf.c:40:0:
> lib/../mm/internal.h: In function 'vma_has_changed':
>>> lib/../mm/internal.h:59:26: error: 'struct vm_fault' has no member named 'sequence'
> return ret || seq != vmf->sequence;> ^~
This is because I remove the sequence parameter to this service to rely on
vmf->sequence. But the sequence field is added to the vm fault structure in
the next patch. I'll move the define of vma_has_changed to the next patch
introducing the speculative page fault handler since this service is not
used in this patch.
Cheers,
Laurent.
> vim +59 mm/internal.h
>
> 44
> 45 extern struct vm_area_struct *find_vma_srcu(struct mm_struct *mm,
> 46 unsigned long addr);
> 47
> 48 static inline bool vma_has_changed(struct vm_fault *vmf)
> 49 {
> 50 int ret = RB_EMPTY_NODE(&vmf->vma->vm_rb);
> 51 unsigned seq = ACCESS_ONCE(vmf->vma->vm_sequence.sequence);
> 52
> 53 /*
> 54 * Matches both the wmb in write_seqlock_{begin,end}() and
> 55 * the wmb in vma_rb_erase().
> 56 */
> 57 smp_rmb();
> 58
> > 59 return ret || seq != vmf->sequence;
> 60 }
> 61
>
> ---
> 0-DAY kernel test infrastructure Open Source Technology Center
> https://lists.01.org/pipermail/kbuild-all Intel Corporation
>