[RFC PATCH 0/3] alloc_tag: fix races and a leak around shutdown_mem_profiling()
From: Hao Ge
Date: Thu Aug 13 2026 - 05:39:12 EST
Three fixes for races and a leak in how allocation profiling meets the
module loader, reported by sashiko.
1. percpu counter leak on modules loaded after profiling is disabled.
2. layout/move TOCTOU that can silently overwrite module memory when
profiling disabled between layout_sections() and move_module().
Additionally, the retry logic here depends on [1].
3. AB-BA deadlock between module load and /proc/allocinfo readers.
Patch 1 adds CODETAG_MODULE_EXCLUDED so profiling-disabled modules are
dropped from the tag list instead of half-registered, and frees the
section reservation unconditionally on unload. Patch 2 makes
layout_sections() the sole authority for codetag placement. Patch 3
defers remove_proc_entry() to a workqueue.
Feedback and suggestions are warmly welcomed; I would greatly appreciate
any input.
Remaining sashiko-reported bugs will be fixed in follow-up patches.
[1]: https://lore.kernel.org/all/20260812054105.102637-3-hao.ge@xxxxxxxxx/
Hao Ge (3):
alloc_tag: skip percpu counter allocation when profiling is disabled
module: move codetag section placement decision to layout_sections()
alloc_tag: remove /proc/allocinfo outside of mod_lock
include/linux/codetag.h | 4 ++++
include/linux/module.h | 11 +++++++++++
kernel/module/main.c | 17 ++++++-----------
lib/codetag.c | 8 +++++---
mm/alloc_tag.c | 25 ++++++++++++++++++++++---
5 files changed, 48 insertions(+), 17 deletions(-)
--
2.25.1