• Suren Baghdasaryan's avatar
    mm: handle profiling for fake memory allocations during compaction · 34a023dc
    Suren Baghdasaryan authored
    During compaction isolated free pages are marked allocated so that they
    can be split and/or freed.  For that, post_alloc_hook() is used inside
    split_map_pages() and release_free_list().  split_map_pages() marks free
    pages allocated, splits the pages and then lets
    alloc_contig_range_noprof() free those pages.  release_free_list() marks
    free pages and immediately frees them.  This usage of post_alloc_hook()
    affect memory allocation profiling because these functions might not be
    called from an instrumented allocator, therefore current->alloc_tag is
    NULL and when debugging is enabled (CONFIG_MEM_ALLOC_PROFILING_DEBUG=y)
    that causes warnings.  To avoid that, wrap such post_alloc_hook() calls
    into an instrumented function which acts as an allocator which will be
    charged for these fake allocations.  Note that these allocations are very
    short lived until they are freed, therefore the associated counters should
    usually read 0.
    
    Link: https://lkml.kernel.org/r/20240614230504.3849136-1-surenb@google.comSigned-off-by: default avatarSuren Baghdasaryan <surenb@google.com>
    Acked-by: default avatarVlastimil Babka <vbabka@suse.cz>
    Cc: Kees Cook <keescook@chromium.org>
    Cc: Kent Overstreet <kent.overstreet@linux.dev>
    Cc: Pasha Tatashin <pasha.tatashin@soleen.com>
    Cc: Sourav Panda <souravpanda@google.com>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    34a023dc
compaction.c 93 KB