Sorry for the late review, I've been away. For the whole series, Reviewed-by: Liam R. Howlett <Liam.Howlett@xxxxxxxxxx> * Vlastimil Babka <vbabka@xxxxxxx> [230309 06:18]: > Also available in git: > https://git.kernel.org/vbabka/h/vma_merge_cleanup-v1r2 > > Changes since RFC: > - rebased to 6.3-rc1, dropped first patch (urgent fix) that was merged there > - reindent parameters of mergeability checks (suggested by willy on IRC) > > 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 d014cd7c1c35 ("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. > > Vlastimil Babka (10): > mm/mmap/vma_merge: use only primary pointers for preparing merge > mm/mmap/vma_merge: use the proper vma pointer in case 3 > mm/mmap/vma_merge: use the proper vma pointers in cases 1 and 6 > mm/mmap/vma_merge: use the proper vma pointer in case 4 > mm/mmap/vma_merge: initialize mid and next in natural order > mm/mmap/vma_merge: set mid to NULL if not applicable > mm/mmap/vma_merge: rename adj_next to adj_start > mm/mmap/vma_merge: convert mergeability checks to return bool > mm/mmap: start distinguishing if vma can be removed in mergeability > test > mm/mremap: simplify vma expansion again > > mm/mmap.c | 142 ++++++++++++++++++++++++++++------------------------ > mm/mremap.c | 20 ++------ > 2 files changed, 80 insertions(+), 82 deletions(-) > > -- > 2.39.2 >