On Mon, Apr 21, 2025 at 03:52:32PM +0800, Zhenhua Huang wrote:
When memory allocation profiling is disabled at runtime or due to an error, shutdown_mem_profiling() is called: slab->obj_exts which previously allocated remains. It won't be cleared by unaccount_slab() because of mem_alloc_profiling_enabled() not true. It's incorrect, slab->obj_exts should always be cleaned up in unaccount_slab() to avoid following error:
[...]BUG: Bad page state in process... .. [...]page dumped because: page still charged to cgroup
Please, always compile test with `make W=1`. Since CONFIG_WERROR=y this effectively breaks the build with Clang.