Re: [PATCH] mm: Change return type to vm_fault_t

From: Matthew Wilcox
Date: Tue May 29 2018 - 13:35:43 EST


On Tue, May 29, 2018 at 09:25:05PM +0530, Souptick Joarder wrote:
> On Tue, May 29, 2018 at 8:20 PM, Matthew Wilcox <willy@xxxxxxxxxxxxx> wrote:
> > On Tue, May 29, 2018 at 08:01:26PM +0530, Souptick Joarder wrote:
> >> Use new return type vm_fault_t for fault handler. For
> >> now, this is just documenting that the function returns
> >> a VM_FAULT value rather than an errno. Once all instances
> >> are converted, vm_fault_t will become a distinct type.
> >
> > I don't believe you've checked this with sparse.
> >
> >> @@ -802,7 +802,8 @@ int fixup_user_fault(struct task_struct *tsk, struct mm_struct *mm,
> >> bool *unlocked)
> >> {
> >> struct vm_area_struct *vma;
> >> - int ret, major = 0;
> >> + int major = 0;
> >> + vm_fault_t ret;
> >>
> >> if (unlocked)
> >> fault_flags |= FAULT_FLAG_ALLOW_RETRY;
> >
> > ...
> > major |= ret & VM_FAULT_MAJOR;
> >
> > That should be throwing a warning.
>
> Sorry, but I verified again and didn't see similar warnings.
>
> steps followed -
>
> apply the patch
> make c=2 -j4 ( build for x86_64)
> looking for warnings in files because of this patch.
>
> The only error I am seeing "error: undefined identifier '__COUNTER__' "
> which is pointing to BUG(). There are few warnings but those are not
> related to this patch.
>
> In my test tree the final patch to create new vm_fault_t type is
> already applied.
>
> Do you want me to verify in some other way ?

I see:

mm/gup.c:817:15: warning: invalid assignment: |=
mm/gup.c:817:15: left side has type int
mm/gup.c:817:15: right side has type restricted vm_fault_t

are you building with 'c=2' or 'C=2'?