summaryrefslogtreecommitdiff
path: root/mm/mm_init.c
diff options
context:
space:
mode:
authorSuren Baghdasaryan <surenb@google.com>2022-12-23 00:26:19 +0000
committerSuren Baghdasaryan <surenb@google.com>2024-02-11 10:45:55 -0800
commitf9e719d34798eefd31024f2842cd09b6b3857dfa (patch)
tree9135fb7348555a9bb599e438ead0ed08a17e26a4 /mm/mm_init.c
parent3ab9e6a75308b9ba298489ba5294d34cf7baf10d (diff)
codetag: debug: mark codetags for reserved pages as empty
To avoid debug warnings while freeing reserved pages which were not allocated with usual allocators, mark their codetags as empty before freeing. Signed-off-by: Suren Baghdasaryan <surenb@google.com>
Diffstat (limited to 'mm/mm_init.c')
-rw-r--r--mm/mm_init.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/mm/mm_init.c b/mm/mm_init.c
index e9ea2919d02d..f5386632fe86 100644
--- a/mm/mm_init.c
+++ b/mm/mm_init.c
@@ -2566,6 +2566,7 @@ void __init set_dma_reserve(unsigned long new_dma_reserve)
void __init memblock_free_pages(struct page *page, unsigned long pfn,
unsigned int order)
{
+ union codetag_ref *ref;
if (IS_ENABLED(CONFIG_DEFERRED_STRUCT_PAGE_INIT)) {
int nid = early_pfn_to_nid(pfn);
@@ -2578,6 +2579,14 @@ void __init memblock_free_pages(struct page *page, unsigned long pfn,
/* KMSAN will take care of these pages. */
return;
}
+
+ /* pages were reserved and not allocated */
+ ref = get_page_tag_ref(page);
+ if (ref) {
+ set_codetag_empty(ref);
+ put_page_tag_ref(ref);
+ }
+
__free_pages_core(page, order);
}