Message ID | 20230309111258.24079-9-vbabka@suse.cz (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | cleanup vma_merge() and improve mergeability tests | expand |
On Thu, Mar 09, 2023 at 12:12:56PM +0100, Vlastimil Babka wrote: > The comments already mention returning 'true' so make the code match > them. > > Signed-off-by: Vlastimil Babka <vbabka@suse.cz> > --- > mm/mmap.c | 53 +++++++++++++++++++++++++---------------------------- > 1 file changed, 25 insertions(+), 28 deletions(-) > > diff --git a/mm/mmap.c b/mm/mmap.c > index c51d69592e4e..d20bbe9ec613 100644 > --- a/mm/mmap.c > +++ b/mm/mmap.c > @@ -744,10 +744,10 @@ int vma_shrink(struct vma_iterator *vmi, struct vm_area_struct *vma, > * If the vma has a ->close operation then the driver probably needs to release > * per-vma resources, so we don't attempt to merge those. > */ > -static inline int is_mergeable_vma(struct vm_area_struct *vma, > - struct file *file, unsigned long vm_flags, > - struct vm_userfaultfd_ctx vm_userfaultfd_ctx, > - struct anon_vma_name *anon_name) > +static inline bool is_mergeable_vma(struct vm_area_struct *vma, > + struct file *file, unsigned long vm_flags, > + struct vm_userfaultfd_ctx vm_userfaultfd_ctx, > + struct anon_vma_name *anon_name) > { > /* > * VM_SOFTDIRTY should not prevent from VMA merging, if we > @@ -758,21 +758,20 @@ static inline int is_mergeable_vma(struct vm_area_struct *vma, > * extended instead. > */ > if ((vma->vm_flags ^ vm_flags) & ~VM_SOFTDIRTY) > - return 0; > + return false; > if (vma->vm_file != file) > - return 0; > + return false; > if (vma->vm_ops && vma->vm_ops->close) > - return 0; > + return false; > if (!is_mergeable_vm_userfaultfd_ctx(vma, vm_userfaultfd_ctx)) > - return 0; > + return false; > if (!anon_vma_name_eq(anon_vma_name(vma), anon_name)) > - return 0; > - return 1; > + return false; > + return true; > } > > -static inline int is_mergeable_anon_vma(struct anon_vma *anon_vma1, > - struct anon_vma *anon_vma2, > - struct vm_area_struct *vma) > +static inline bool is_mergeable_anon_vma(struct anon_vma *anon_vma1, > + struct anon_vma *anon_vma2, struct vm_area_struct *vma) > { > /* > * The list_is_singular() test is to avoid merging VMA cloned from > @@ -780,7 +779,7 @@ static inline int is_mergeable_anon_vma(struct anon_vma *anon_vma1, > */ > if ((!anon_vma1 || !anon_vma2) && (!vma || > list_is_singular(&vma->anon_vma_chain))) > - return 1; > + return true; > return anon_vma1 == anon_vma2; > } > > @@ -795,19 +794,18 @@ static inline int is_mergeable_anon_vma(struct anon_vma *anon_vma1, > * indices (16TB on ia32) because do_mmap() does not permit mmap's which > * wrap, nor mmaps which cover the final page at index -1UL. > */ > -static int > +static bool > can_vma_merge_before(struct vm_area_struct *vma, unsigned long vm_flags, > - struct anon_vma *anon_vma, struct file *file, > - pgoff_t vm_pgoff, > - struct vm_userfaultfd_ctx vm_userfaultfd_ctx, > - struct anon_vma_name *anon_name) > + struct anon_vma *anon_vma, struct file *file, > + pgoff_t vm_pgoff, struct vm_userfaultfd_ctx vm_userfaultfd_ctx, > + struct anon_vma_name *anon_name) > { > if (is_mergeable_vma(vma, file, vm_flags, vm_userfaultfd_ctx, anon_name) && > is_mergeable_anon_vma(anon_vma, vma->anon_vma, vma)) { > if (vma->vm_pgoff == vm_pgoff) > - return 1; > + return true; > } > - return 0; > + return false; > } > > /* > @@ -817,21 +815,20 @@ can_vma_merge_before(struct vm_area_struct *vma, unsigned long vm_flags, > * We cannot merge two vmas if they have differently assigned (non-NULL) > * anon_vmas, nor if same anon_vma is assigned but offsets incompatible. > */ > -static int > +static bool > can_vma_merge_after(struct vm_area_struct *vma, unsigned long vm_flags, > - struct anon_vma *anon_vma, struct file *file, > - pgoff_t vm_pgoff, > - struct vm_userfaultfd_ctx vm_userfaultfd_ctx, > - struct anon_vma_name *anon_name) > + struct anon_vma *anon_vma, struct file *file, > + pgoff_t vm_pgoff, struct vm_userfaultfd_ctx vm_userfaultfd_ctx, > + struct anon_vma_name *anon_name) > { > if (is_mergeable_vma(vma, file, vm_flags, vm_userfaultfd_ctx, anon_name) && > is_mergeable_anon_vma(anon_vma, vma->anon_vma, vma)) { > pgoff_t vm_pglen; > vm_pglen = vma_pages(vma); > if (vma->vm_pgoff + vm_pglen == vm_pgoff) > - return 1; > + return true; > } > - return 0; > + return false; > } > > /* > -- > 2.39.2 > Partying like it's C99 :) Good improvement, feels sensible to move on from using return types as if the 1st edition of The C Programming Language were still current! Therefore, Reviewed-By: Lorenzo Stoakes <lstoakes@gmail.com>
diff --git a/mm/mmap.c b/mm/mmap.c index c51d69592e4e..d20bbe9ec613 100644 --- a/mm/mmap.c +++ b/mm/mmap.c @@ -744,10 +744,10 @@ int vma_shrink(struct vma_iterator *vmi, struct vm_area_struct *vma, * If the vma has a ->close operation then the driver probably needs to release * per-vma resources, so we don't attempt to merge those. */ -static inline int is_mergeable_vma(struct vm_area_struct *vma, - struct file *file, unsigned long vm_flags, - struct vm_userfaultfd_ctx vm_userfaultfd_ctx, - struct anon_vma_name *anon_name) +static inline bool is_mergeable_vma(struct vm_area_struct *vma, + struct file *file, unsigned long vm_flags, + struct vm_userfaultfd_ctx vm_userfaultfd_ctx, + struct anon_vma_name *anon_name) { /* * VM_SOFTDIRTY should not prevent from VMA merging, if we @@ -758,21 +758,20 @@ static inline int is_mergeable_vma(struct vm_area_struct *vma, * extended instead. */ if ((vma->vm_flags ^ vm_flags) & ~VM_SOFTDIRTY) - return 0; + return false; if (vma->vm_file != file) - return 0; + return false; if (vma->vm_ops && vma->vm_ops->close) - return 0; + return false; if (!is_mergeable_vm_userfaultfd_ctx(vma, vm_userfaultfd_ctx)) - return 0; + return false; if (!anon_vma_name_eq(anon_vma_name(vma), anon_name)) - return 0; - return 1; + return false; + return true; } -static inline int is_mergeable_anon_vma(struct anon_vma *anon_vma1, - struct anon_vma *anon_vma2, - struct vm_area_struct *vma) +static inline bool is_mergeable_anon_vma(struct anon_vma *anon_vma1, + struct anon_vma *anon_vma2, struct vm_area_struct *vma) { /* * The list_is_singular() test is to avoid merging VMA cloned from @@ -780,7 +779,7 @@ static inline int is_mergeable_anon_vma(struct anon_vma *anon_vma1, */ if ((!anon_vma1 || !anon_vma2) && (!vma || list_is_singular(&vma->anon_vma_chain))) - return 1; + return true; return anon_vma1 == anon_vma2; } @@ -795,19 +794,18 @@ static inline int is_mergeable_anon_vma(struct anon_vma *anon_vma1, * indices (16TB on ia32) because do_mmap() does not permit mmap's which * wrap, nor mmaps which cover the final page at index -1UL. */ -static int +static bool can_vma_merge_before(struct vm_area_struct *vma, unsigned long vm_flags, - struct anon_vma *anon_vma, struct file *file, - pgoff_t vm_pgoff, - struct vm_userfaultfd_ctx vm_userfaultfd_ctx, - struct anon_vma_name *anon_name) + struct anon_vma *anon_vma, struct file *file, + pgoff_t vm_pgoff, struct vm_userfaultfd_ctx vm_userfaultfd_ctx, + struct anon_vma_name *anon_name) { if (is_mergeable_vma(vma, file, vm_flags, vm_userfaultfd_ctx, anon_name) && is_mergeable_anon_vma(anon_vma, vma->anon_vma, vma)) { if (vma->vm_pgoff == vm_pgoff) - return 1; + return true; } - return 0; + return false; } /* @@ -817,21 +815,20 @@ can_vma_merge_before(struct vm_area_struct *vma, unsigned long vm_flags, * We cannot merge two vmas if they have differently assigned (non-NULL) * anon_vmas, nor if same anon_vma is assigned but offsets incompatible. */ -static int +static bool can_vma_merge_after(struct vm_area_struct *vma, unsigned long vm_flags, - struct anon_vma *anon_vma, struct file *file, - pgoff_t vm_pgoff, - struct vm_userfaultfd_ctx vm_userfaultfd_ctx, - struct anon_vma_name *anon_name) + struct anon_vma *anon_vma, struct file *file, + pgoff_t vm_pgoff, struct vm_userfaultfd_ctx vm_userfaultfd_ctx, + struct anon_vma_name *anon_name) { if (is_mergeable_vma(vma, file, vm_flags, vm_userfaultfd_ctx, anon_name) && is_mergeable_anon_vma(anon_vma, vma->anon_vma, vma)) { pgoff_t vm_pglen; vm_pglen = vma_pages(vma); if (vma->vm_pgoff + vm_pglen == vm_pgoff) - return 1; + return true; } - return 0; + return false; } /*
The comments already mention returning 'true' so make the code match them. Signed-off-by: Vlastimil Babka <vbabka@suse.cz> --- mm/mmap.c | 53 +++++++++++++++++++++++++---------------------------- 1 file changed, 25 insertions(+), 28 deletions(-)