Message ID | 1574059147-13678-1-git-send-email-linmiaohe@huawei.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | [v3] mm: get rid of odd jump labels in find_mergeable_anon_vma() | expand |
On 18.11.19 07:39, linmiaohe wrote: > From: Miaohe Lin <linmiaohe@huawei.com> > > The jump labels try_prev and none are not really needed > in find_mergeable_anon_vma(), eliminate them to improve > readability. > > Reviewed-by: David Hildenbrand <david@redhat.com> > Reviewed-by: John Hubbard <jhubbard@nvidia.com> > Signed-off-by: Miaohe Lin <linmiaohe@huawei.com> > --- > -v2: > Fix commit descriptions and further simplify the code > as suggested by David Hildenbrand and John Hubbard. > -v3: > Rewrite patch version info. Don't show this in commit log. > --- > mm/mmap.c | 27 +++++++++++++-------------- > 1 file changed, 13 insertions(+), 14 deletions(-) > > diff --git a/mm/mmap.c b/mm/mmap.c > index 4d4db76a07da..ff02c23fd375 100644 > --- a/mm/mmap.c > +++ b/mm/mmap.c > @@ -1276,26 +1276,25 @@ static struct anon_vma *reusable_anon_vma(struct vm_area_struct *old, struct vm_ > */ > struct anon_vma *find_mergeable_anon_vma(struct vm_area_struct *vma) > { > - struct anon_vma *anon_vma; > + struct anon_vma *anon_vma = NULL; > struct vm_area_struct *near; > > + /* Try next first. */ > near = vma->vm_next; > - if (!near) > - goto try_prev; > + if (near) { > + anon_vma = reusable_anon_vma(near, vma, near); > + if (anon_vma) > + return anon_vma; > + } I think you can get rid of near completely as well if (vma->vm_next) { anon_vma = reusable_anon_vma(near, vma, vma->vm_next); if (anon_vma) return anon_vma; } ... Apart from that looks good to me. > > - anon_vma = reusable_anon_vma(near, vma, near); > - if (anon_vma) > - return anon_vma; > -try_prev: > + /* Try prev next. */ > near = vma->vm_prev; > - if (!near) > - goto none; > + if (near) > + anon_vma = reusable_anon_vma(near, near, vma); > > - anon_vma = reusable_anon_vma(near, near, vma); > - if (anon_vma) > - return anon_vma; > -none: > /* > + * We might reach here with anon_vma == NULL if we can't find > + * any reusable anon_vma. > * There's no absolute need to look only at touching neighbours: > * we could search further afield for "compatible" anon_vmas. > * But it would probably just be a waste of time searching, > @@ -1303,7 +1302,7 @@ struct anon_vma *find_mergeable_anon_vma(struct vm_area_struct *vma) > * We're trying to allow mprotect remerging later on, > * not trying to minimize memory used for anon_vmas. > */ > - return NULL; > + return anon_vma; > } > > /* >
diff --git a/mm/mmap.c b/mm/mmap.c index 4d4db76a07da..ff02c23fd375 100644 --- a/mm/mmap.c +++ b/mm/mmap.c @@ -1276,26 +1276,25 @@ static struct anon_vma *reusable_anon_vma(struct vm_area_struct *old, struct vm_ */ struct anon_vma *find_mergeable_anon_vma(struct vm_area_struct *vma) { - struct anon_vma *anon_vma; + struct anon_vma *anon_vma = NULL; struct vm_area_struct *near; + /* Try next first. */ near = vma->vm_next; - if (!near) - goto try_prev; + if (near) { + anon_vma = reusable_anon_vma(near, vma, near); + if (anon_vma) + return anon_vma; + } - anon_vma = reusable_anon_vma(near, vma, near); - if (anon_vma) - return anon_vma; -try_prev: + /* Try prev next. */ near = vma->vm_prev; - if (!near) - goto none; + if (near) + anon_vma = reusable_anon_vma(near, near, vma); - anon_vma = reusable_anon_vma(near, near, vma); - if (anon_vma) - return anon_vma; -none: /* + * We might reach here with anon_vma == NULL if we can't find + * any reusable anon_vma. * There's no absolute need to look only at touching neighbours: * we could search further afield for "compatible" anon_vmas. * But it would probably just be a waste of time searching, @@ -1303,7 +1302,7 @@ struct anon_vma *find_mergeable_anon_vma(struct vm_area_struct *vma) * We're trying to allow mprotect remerging later on, * not trying to minimize memory used for anon_vmas. */ - return NULL; + return anon_vma; } /*