• Vlastimil Babka's avatar
    mm/mmap/vma_merge: use only primary pointers for preparing merge · 50dac011
    Vlastimil Babka authored
    Patch series "cleanup vma_merge() and improve mergeability tests".
    
    My initial goal here was to try making the check for vm_ops->close in
    is_mergeable_vma() only be applied for vma's that would be truly removed
    as part of the merge (see Patch 9).  This would then allow reverting the
    quick fix d014cd7c ("mm, mremap: fix mremap() expanding for vma's with
    vm_ops->close()").  This was successful enough to allow the revert (Patch
    10).  Checks using can_vma_merge_before() are still pessimistic about
    possible vma removal, and making them precise would probably complicate
    the vma_merge() code too much.
    
    Liam's 6.3-rc1 simplification of vma_merge() and removal of __vma_adjust()
    was very much helpful in understanding the vma_merge() implementation and
    especially when vma removals can happen, which is now very obvious.  While
    studing the code, I've found ways to make it hopefully even more easy to
    follow, so that's the patches 1-8.  That made me also notice a bug that's
    now already fixed in 6.3-rc1.
    
    
    This patch (of 10):
    
    In the merging preparation part of vma_merge(), some vma pointer variables
    are assigned for later execution of the merge, but also read from in the
    block itself.  The code is easier follow and check against the cases
    diagram in the comment if the code reads only from the "primary" vma
    variables prev, mid, next instead.  No functional change.
    
    Link: https://lkml.kernel.org/r/20230309111258.24079-1-vbabka@suse.cz
    Link: https://lkml.kernel.org/r/20230309111258.24079-2-vbabka@suse.czSigned-off-by: default avatarVlastimil Babka <vbabka@suse.cz>
    Reviewed-by: Lorenzo Stoakes <lstoakes@gmail.com>]
    Reviewed-by: default avatarLiam R. Howlett <Liam.Howlett@oracle.com>
    Cc: Matthew Wilcox (Oracle) <willy@infradead.org>
    Cc: Suren Baghdasaryan <surenb@google.com>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    50dac011
mmap.c 98.6 KB