Re: [PATCH] maple_tree: Make mas_prealloc() error checking more generic

From: Andrew Morton
Date: Tue Jun 21 2022 - 16:38:51 EST


On Tue, 21 Jun 2022 13:22:59 +0000 Liam Howlett <liam.howlett@xxxxxxxxxx> wrote:

> * David Hildenbrand <david@xxxxxxxxxx> [220621 05:09]:
> > On 15.06.22 19:42, Liam Howlett wrote:
> > > Return the error regardless of what it is. This is a safer option.
> > >
> > > Signed-off-by: Liam R. Howlett <Liam.Howlett@xxxxxxxxxx>
> > > ---
> > > lib/maple_tree.c | 5 ++---
> > > 1 file changed, 2 insertions(+), 3 deletions(-)
> > >
> > > diff --git a/lib/maple_tree.c b/lib/maple_tree.c
> > > index f413b6f0da2b..89ff5ef7ee28 100644
> > > --- a/lib/maple_tree.c
> > > +++ b/lib/maple_tree.c
> > > @@ -5670,16 +5670,15 @@ void mas_store_prealloc(struct ma_state *mas, void *entry)
> > > */
> > > int mas_preallocate(struct ma_state *mas, void *entry, gfp_t gfp)
> > > {
> > > -
> > > mas_set_alloc_req(mas, 1 + mas_mt_height(mas) * 3);
> > > mas_alloc_nodes(mas, gfp);
> > > - if (likely(mas->node != MA_ERROR(-ENOMEM)))
> > > + if (likely(!mas_is_err(mas)))
> > > return 0;
> > >
> > > mas_set_alloc_req(mas, 0);
> > > mas_destroy(mas);
> > > mas->node = MAS_START;
> > > - return -ENOMEM;
> > > + return xa_err(mas->node);
> > > }
> > >
> > > /*
> >
> > Liam, (as asked privately before, I was just too busy to respond :) )
> > once all known issues are fixed, can we have a new version posted to
> > ease review? That would make my life easier to see what needs review and
> > in which order patches apply. Thanks!
> >
>
>
> Yes. Thanks for asking.
>
> Andrew didn't want to lose the comments so maybe I'll squash the fixes
> into a branch and send that out as a response to v9 if that works?

I guess it's time for a new series - things are getting a little
straggly:

maple-tree-add-new-data-structure-fix.patch
maple-tree-add-new-data-structure-fix-2.patch
maple-tree-add-new-data-structure-fix-3.patch
maple-tree-add-new-data-structure-fix-4.patch
maple-tree-add-new-data-structure-fix-5.patch
maple-tree-add-new-data-structure-fix-6.patch
maple-tree-add-new-data-structure-fix-7.patch
maple-tree-add-new-data-structure-fix-8.patch
maple-tree-add-new-data-structure-fix-8-fix.patch
maple-tree-add-new-data-structure-fix-9.patch
maple-tree-add-new-data-structure-fix-10.patch
lib-test_maple_tree-add-testing-for-maple-tree-fix.patch
lib-test_maple_tree-add-testing-for-maple-tree-fix-2.patch
mm-start-tracking-vmas-with-maple-tree-fix.patch
mm-start-tracking-vmas-with-maple-tree-fix-2.patch
damon-convert-__damon_va_three_regions-to-use-the-vma-iterator-fix.patch
mm-mmap-use-advanced-maple-tree-api-for-mmap_region-fix.patch
mm-mmap-use-advanced-maple-tree-api-for-mmap_region-fix-checkpatch-fixes.patch
mm-mmap-use-advanced-maple-tree-api-for-mmap_region-fix-2.patch
mm-mmap-use-advanced-maple-tree-api-for-mmap_region-fix-3.patch
mm-mmap-change-do_brk_munmap-to-use-do_mas_align_munmap-fix.patch
userfaultfd-use-maple-tree-iterator-to-iterate-vmas-fix.patch
nommu-remove-uses-of-vma-linked-list-fix.patch
nommu-remove-uses-of-vma-linked-list-fix-fix.patch
mm-remove-the-vma-linked-list-fix.patch
mm-remove-the-vma-linked-list-fix-fix.patch
mm-remove-the-vma-linked-list-fix-fix-fix.patch
mm-remove-the-vma-linked-list-fix-4.patch

So please send when convenient and I'll check that it matches what I
presently have.