]> www.infradead.org Git - users/hch/dma-mapping.git/commit
mm: handle profiling for fake memory allocations during compaction
authorSuren Baghdasaryan <surenb@google.com>
Fri, 14 Jun 2024 23:05:04 +0000 (16:05 -0700)
committerAndrew Morton <akpm@linux-foundation.org>
Tue, 25 Jun 2024 03:52:09 +0000 (20:52 -0700)
commit34a023dc88696afed9ade7825f11f87ba657b133
treef0a95b944ef6c2d34d0c71888c2a10cd77341f03
parentb4601d096aac8ed26afa88ef8b249975b0530ca1
mm: handle profiling for fake memory allocations during compaction

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.com
Signed-off-by: Suren Baghdasaryan <surenb@google.com>
Acked-by: Vlastimil 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: Andrew Morton <akpm@linux-foundation.org>
mm/compaction.c