• Colin Cross's avatar
    mm: rearrange madvise code to allow for reuse · ac1e9acc
    Colin Cross authored
    Patch series "mm: rearrange madvise code to allow for reuse", v11.
    
    Avoid performance regression of the new anon vma name field refcounting it.
    
    I checked the image sizes with allnoconfig builds:
    
      unpatched Linus' ToT
         text    data     bss     dec     hex filename
      1324759      32   73928 1398719 1557bf vmlinux
    
      After the first patch is applied (madvise refactoring)
         text    data     bss     dec     hex filename
      1322346      32   73928 1396306 154e52 vmlinux
      >>> 2413 bytes decrease vs ToT <<<
    
      After all patches applied with CONFIG_ANON_VMA_NAME=n
         text    data     bss     dec     hex filename
      1322337      32   73928 1396297 154e49 vmlinux
      >>> 2422 bytes decrease vs ToT <<<
    
      After all patches applied with CONFIG_ANON_VMA_NAME=y
         text    data     bss     dec     hex filename
      1325228      32   73928 1399188 155994 vmlinux
      >>> 469 bytes increase vs ToT <<<
    
    This patch (of 3):
    
    Refactor the madvise syscall to allow for parts of it to be reused by a
    prctl syscall that affects vmas.
    
    Move the code that walks vmas in a virtual address range into a function
    that takes a function pointer as a parameter.  The only caller for now
    is sys_madvise, which uses it to call madvise_vma_behavior on each vma,
    but the next patch will add an additional caller.
    
    Move handling all vma behaviors inside madvise_behavior, and rename it
    to madvise_vma_behavior.
    
    Move the code that updates the flags on a vma, including splitting or
    merging the vma as necessary, into a new function called
    madvise_update_vma.  The next patch will add support for updating a new
    anon_name field as well.
    
    Link: https://lkml.kernel.org/r/20211019215511.3771969-1-surenb@google.comSigned-off-by: default avatarColin Cross <ccross@google.com>
    Signed-off-by: default avatarSuren Baghdasaryan <surenb@google.com>
    Cc: Pekka Enberg <penberg@kernel.org>
    Cc: Dave Hansen <dave.hansen@intel.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Ingo Molnar <mingo@kernel.org>
    Cc: Oleg Nesterov <oleg@redhat.com>
    Cc: "Eric W. Biederman" <ebiederm@xmission.com>
    Cc: Jan Glauber <jan.glauber@gmail.com>
    Cc: John Stultz <john.stultz@linaro.org>
    Cc: Rob Landley <rob@landley.net>
    Cc: Cyrill Gorcunov <gorcunov@openvz.org>
    Cc: Kees Cook <keescook@chromium.org>
    Cc: "Serge E. Hallyn" <serge.hallyn@ubuntu.com>
    Cc: David Rientjes <rientjes@google.com>
    Cc: Al Viro <viro@zeniv.linux.org.uk>
    Cc: Hugh Dickins <hughd@google.com>
    Cc: Mel Gorman <mgorman@suse.de>
    Cc: Shaohua Li <shli@fusionio.com>
    Cc: Johannes Weiner <hannes@cmpxchg.org>
    Cc: Minchan Kim <minchan@kernel.org>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    ac1e9acc
madvise.c 33.1 KB