• Lorenzo Stoakes's avatar
    mm: introduce vma_merge_struct and abstract vma_merge(),vma_modify() · 2f1c6611
    Lorenzo Stoakes authored
    Rather than passing around huge numbers of parameters to numerous helper
    functions, abstract them into a single struct that we thread through the
    operation, the vma_merge_struct ('vmg').
    
    Adjust vma_merge() and vma_modify() to accept this parameter, as well as
    predicate functions can_vma_merge_before(), can_vma_merge_after(), and the
    vma_modify_...() helper functions.
    
    Also introduce VMG_STATE() and VMG_VMA_STATE() helper macros to allow for
    easy vmg declaration.
    
    We additionally remove the requirement that vma_merge() is passed a VMA
    object representing the candidate new VMA.  Previously it used this to
    obtain the mm_struct, file and anon_vma properties of the proposed range
    (a rather confusing state of affairs), which are now provided by the vmg
    directly.
    
    We also remove the pgoff calculation previously performed vma_modify(),
    and instead calculate this in VMG_VMA_STATE() via the vma_pgoff_offset()
    helper.
    
    Link: https://lkml.kernel.org/r/a955aad09d81329f6fbeb636b2dd10cde7b73dab.1725040657.git.lorenzo.stoakes@oracle.comSigned-off-by: default avatarLorenzo Stoakes <lorenzo.stoakes@oracle.com>
    Reviewed-by: default avatarLiam R. Howlett <Liam.Howlett@oracle.com>
    Cc: Mark Brown <broonie@kernel.org>
    Cc: Vlastimil Babka <vbabka@suse.cz>
    Cc: Bert Karwatzki <spasswolf@web.de>
    Cc: Jeff Xu <jeffxu@chromium.org>
    Cc: Jiri Olsa <olsajiri@gmail.com>
    Cc: Kees Cook <kees@kernel.org>
    Cc: Lorenzo Stoakes <lstoakes@gmail.com>
    Cc: Matthew Wilcox <willy@infradead.org>
    Cc: "Paul E. McKenney" <paulmck@kernel.org>
    Cc: Paul Moore <paul@paul-moore.com>
    Cc: Sidhartha Kumar <sidhartha.kumar@oracle.com>
    Cc: Suren Baghdasaryan <surenb@google.com>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    2f1c6611
vma.c 51.4 KB