* [to-be-updated] alloc_tag-fix-undetected-compressed-tag-overflow-when-profiling-is-disabled.patch removed from -mm tree
@ 2026-08-05 16:50 Andrew Morton
0 siblings, 0 replies; 2+ messages in thread
From: Andrew Morton @ 2026-08-05 16:50 UTC (permalink / raw)
To: mm-commits, hao.ge, akpm
The quilt patch titled
Subject: alloc_tag: fix undetected compressed tag overflow when profiling is disabled
has been removed from the -mm tree. Its filename was
alloc_tag-fix-undetected-compressed-tag-overflow-when-profiling-is-disabled.patch
This patch was dropped because an updated version will be issued
------------------------------------------------------
From: Hao Ge <hao.ge@linux.dev>
Subject: alloc_tag: fix undetected compressed tag overflow when profiling is disabled
Date: Tue, 4 Aug 2026 14:44:08 +0800
In reserve_module_tags(), the tag overflow check is gated on
mem_alloc_profiling_enabled():
if (mem_alloc_profiling_enabled() && !tags_addressable())
If profiling is toggled off at runtime and a module is loaded whose tags
exceed the compressed-mode limit, shutdown_mem_profiling() is skipped.
vm_module_tags_populate() still maps memory for the tags and the module
loads successfully, but the total tag count now exceeds what
NR_UNUSED_PAGEFLAG_BITS can address.
Once profiling is re-enabled, ref_to_idx() computes each tag's index as
its position in the alloc_tag array. update_page_tag_ref() masks it to
alloc_tag_ref_mask before storing in page->flags. Indices beyond the mask
are truncated and idx_to_ref() resolves them to wrong tags.
mem_alloc_profiling_enabled() and mem_profiling_compressed are
independent. Once compressed mode is established at boot, it stays active
regardless of runtime toggles of mem_profiling.
We therefore remove the mem_alloc_profiling_enabled() guard.
Link: https://lore.kernel.org/20260804064408.105033-1-hao.ge@linux.dev
Fixes: 4835f747d3ed ("alloc_tag: support for page allocation tag compression")
Signed-off-by: Hao Ge <hao.ge@linux.dev>
Cc: Hao Ge <hao.ge@linux.dev>
Cc: Abhishek Bapat <abhishekbapat@google.com>
Cc: <stable@vger.kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
---
mm/alloc_tag.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
--- a/mm/alloc_tag.c~alloc_tag-fix-undetected-compressed-tag-overflow-when-profiling-is-disabled
+++ a/mm/alloc_tag.c
@@ -904,7 +904,7 @@ unlock:
int grow_res;
module_tags.size = offset + size;
- if (mem_alloc_profiling_enabled() && !tags_addressable()) {
+ if (!tags_addressable()) {
shutdown_mem_profiling(true);
pr_warn("With module %s there are too many tags to fit in %d page flag bits. Memory allocation profiling is disabled!\n",
mod->name, NR_UNUSED_PAGEFLAG_BITS);
_
Patches currently in -mm which might be from hao.ge@linux.dev are
^ permalink raw reply [flat|nested] 2+ messages in thread* [to-be-updated] alloc_tag-fix-undetected-compressed-tag-overflow-when-profiling-is-disabled.patch removed from -mm tree
@ 2026-08-11 3:23 Andrew Morton
0 siblings, 0 replies; 2+ messages in thread
From: Andrew Morton @ 2026-08-11 3:23 UTC (permalink / raw)
To: mm-commits, surenb, stable, hao.ge, akpm
The quilt patch titled
Subject: alloc_tag: fix undetected compressed tag overflow when profiling is disabled
has been removed from the -mm tree. Its filename was
alloc_tag-fix-undetected-compressed-tag-overflow-when-profiling-is-disabled.patch
This patch was dropped because an updated version will be issued
------------------------------------------------------
From: Hao Ge <hao.ge@linux.dev>
Subject: alloc_tag: fix undetected compressed tag overflow when profiling is disabled
Date: Wed, 5 Aug 2026 17:06:33 +0800
In reserve_module_tags(), the tag overflow check is gated on
mem_alloc_profiling_enabled():
if (mem_alloc_profiling_enabled() && !tags_addressable())
If profiling is toggled off at runtime and a module is loaded whose tags
exceed the compressed-mode limit, shutdown_mem_profiling() is skipped.
vm_module_tags_populate() still maps memory for the tags and the module
loads successfully, but the total tag count now exceeds what
NR_UNUSED_PAGEFLAG_BITS can address.
Once profiling is re-enabled, ref_to_idx() computes each tag's index as
its position in the alloc_tag array. update_page_tag_ref() masks it to
alloc_tag_ref_mask before storing in page->flags. Indices beyond the mask
are truncated and idx_to_ref() resolves them to wrong tags.
This silently corrupts /proc/allocinfo: allocated pages get attributed to
the wrong call sites, so the statistics it reports are wrong.
mem_alloc_profiling_enabled() and mem_profiling_compressed are
independent. Once compressed mode is established at boot, it stays active
regardless of runtime toggles of mem_profiling.
Remove the mem_alloc_profiling_enabled() guard. Also return an error
after shutdown_mem_profiling() to skip vm_module_tags_populate(), as the
mapped pages would never be reused - shutdown_mem_profiling() sets
mem_profiling_support to false, so no future module load enters the
codetag path.
Link: https://lore.kernel.org/20260805090633.141001-1-hao.ge@linux.dev
Fixes: 4835f747d3ed ("alloc_tag: support for page allocation tag compression")
Signed-off-by: Hao Ge <hao.ge@linux.dev>
Acked-by: Suren Baghdasaryan <surenb@google.com>
Cc: <stable@vger.kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
---
mm/alloc_tag.c | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
--- a/mm/alloc_tag.c~alloc_tag-fix-undetected-compressed-tag-overflow-when-profiling-is-disabled
+++ a/mm/alloc_tag.c
@@ -904,10 +904,11 @@ unlock:
int grow_res;
module_tags.size = offset + size;
- if (mem_alloc_profiling_enabled() && !tags_addressable()) {
+ if (!tags_addressable()) {
shutdown_mem_profiling(true);
- pr_warn("With module %s there are too many tags to fit in %d page flag bits. Memory allocation profiling is disabled!\n",
- mod->name, NR_UNUSED_PAGEFLAG_BITS);
+ pr_warn_once("With module %s there are too many tags to fit in %d page flag bits. Memory allocation profiling is disabled!\n",
+ mod->name, NR_UNUSED_PAGEFLAG_BITS);
+ return ERR_PTR(-ENOMEM);
}
grow_res = vm_module_tags_populate();
_
Patches currently in -mm which might be from hao.ge@linux.dev are
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2026-08-11 3:23 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-08-05 16:50 [to-be-updated] alloc_tag-fix-undetected-compressed-tag-overflow-when-profiling-is-disabled.patch removed from -mm tree Andrew Morton
-- strict thread matches above, loose matches on Subject: below --
2026-08-11 3:23 Andrew Morton
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.