• Liam R. Howlett's avatar
    mm: change do_vmi_align_munmap() tracking of VMAs to remove · fd892593
    Liam R. Howlett authored
    The majority of the calls to munmap a vm range is within a single vma.
    The maple tree is able to store a single entry at 0, with a size of 1 as
    a pointer and avoid any allocations.  Change do_vmi_align_munmap() to
    store the VMAs being munmap()'ed into a tree indexed by the count.  This
    will leverage the ability to store the first entry without a node
    allocation.
    
    Storing the entries into a tree by the count and not the vma start and
    end means changing the functions which iterate over the entries.  Update
    unmap_vmas() and free_pgtables() to take a maple state and a tree end
    address to support this functionality.
    
    Passing through the same maple state to unmap_vmas() and free_pgtables()
    means the state needs to be reset between calls.  This happens in the
    static unmap_region() and exit_mmap().
    
    Link: https://lkml.kernel.org/r/20230724183157.3939892-4-Liam.Howlett@oracle.comSigned-off-by: default avatarLiam R. Howlett <Liam.Howlett@oracle.com>
    Cc: Peng Zhang <zhangpeng.00@bytedance.com>
    Cc: Suren Baghdasaryan <surenb@google.com>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    fd892593
mmap.c 103 KB