Re: [PATCH v3 1/3] mm/vma: cleanup error handling path in vma_expand()
From: Suren Baghdasaryan
Date: Thu Feb 26 2026 - 12:54:20 EST
On Thu, Feb 26, 2026 at 8:43 AM Liam R. Howlett <Liam.Howlett@xxxxxxxxxx> wrote:
>
> * Suren Baghdasaryan <surenb@xxxxxxxxxx> [260226 02:06]:
> > vma_expand() error handling is a bit confusing with "if (ret) return ret;"
> > mixed with "if (!ret && ...) ret = ...;". Simplify the code to check
> > for errors and return immediately after an operation that might fail.
> > This also makes later changes to this function more readable.
> >
> > No functional change intended.
> >
> > Suggested-by: Jann Horn <jannh@xxxxxxxxxx>
> > Signed-off-by: Suren Baghdasaryan <surenb@xxxxxxxxxx>
>
> This looks the same as v2, so I'll try again ;)
Sorry, missed adding it. So again, thank you very much!
>
> Reviewed-by: Liam R. Howlett <Liam.Howlett@xxxxxxxxxx>
>
> > ---
> > mm/vma.c | 12 ++++++++----
> > 1 file changed, 8 insertions(+), 4 deletions(-)
> >
> > diff --git a/mm/vma.c b/mm/vma.c
> > index be64f781a3aa..bb4d0326fecb 100644
> > --- a/mm/vma.c
> > +++ b/mm/vma.c
> > @@ -1186,12 +1186,16 @@ int vma_expand(struct vma_merge_struct *vmg)
> > * Note that, by convention, callers ignore OOM for this case, so
> > * we don't need to account for vmg->give_up_on_mm here.
> > */
> > - if (remove_next)
> > + if (remove_next) {
> > ret = dup_anon_vma(target, next, &anon_dup);
> > - if (!ret && vmg->copied_from)
> > + if (ret)
> > + return ret;
> > + }
> > + if (vmg->copied_from) {
> > ret = dup_anon_vma(target, vmg->copied_from, &anon_dup);
> > - if (ret)
> > - return ret;
> > + if (ret)
> > + return ret;
> > + }
> >
> > if (remove_next) {
> > vma_start_write(next);
> > --
> > 2.53.0.414.gf7e9f6c205-goog
> >
> >
>