* Vlastimil Babka <vbabka@xxxxxxx> [220112 07:03]: > On 12/1/21 15:29, Liam Howlett wrote: > > From: "Liam R. Howlett" <Liam.Howlett@xxxxxxxxxx> > > > > Remove the RB tree and start using the maple tree for vm_area_struct > > tracking. > > > > Drop validate_mm() calls in expand_upwards() and expand_downwards() as > > the lock is not held. > > > > Signed-off-by: Liam R. Howlett <Liam.Howlett@xxxxxxxxxx> > > Acked-by: Vlastimil Babka <vbabka@xxxxxxx> > > > --- > > arch/x86/kernel/tboot.c | 1 - > > drivers/firmware/efi/efi.c | 1 - > > include/linux/mm.h | 2 - > > include/linux/mm_types.h | 14 -- > > kernel/fork.c | 8 - > > mm/init-mm.c | 2 - > > mm/mmap.c | 496 ++++++++----------------------------- > > mm/nommu.c | 88 ++----- > > mm/util.c | 8 + > > 9 files changed, 136 insertions(+), 484 deletions(-) > > Nice stats. Thanks. > > Wanted to suggest splitting out the swith to range_has_overlap() but I think > I see how it's not feasible. > > > diff --git a/mm/util.c b/mm/util.c > > index e58151a61255..ab02382c2d57 100644 > > --- a/mm/util.c > > +++ b/mm/util.c > > @@ -287,6 +287,8 @@ void __vma_link_list(struct mm_struct *mm, struct vm_area_struct *vma, > > vma->vm_next = next; > > if (next) > > next->vm_prev = vma; > > + else > > + mm->highest_vm_end = vm_end_gap(vma); > > } > > > > void __vma_unlink_list(struct mm_struct *mm, struct vm_area_struct *vma) > > @@ -301,6 +303,12 @@ void __vma_unlink_list(struct mm_struct *mm, struct vm_area_struct *vma) > > mm->mmap = next; > > if (next) > > next->vm_prev = prev; > > + else { > > Nit: style suggests that once else is { } block then if block should be too, > even though it remains a single line. Ack, I will fix this. Although this function is completely dropped later in the series. > > > + if (prev) > > + mm->highest_vm_end = vm_end_gap(prev); > > + else > > + mm->highest_vm_end = 0; > > + } > > } > > > > /* Check if the vma is being used as a stack by this task */ > >