mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/chenhuacai/linux-loongson
synced 2025-08-27 06:50:37 +00:00
alloc_tag: check mem_profiling_support in alloc_tag_init
If mem_profiling_support is false, for example by sysctl.vm.mem_profiling=never, alloc_tag_init should skip module tags allocation, codetag type registration and procfs init. Link: https://lkml.kernel.org/r/20250513182602.121843-1-cachen@purestorage.com Signed-off-by: Casey Chen <cachen@purestorage.com> Reviewed-by: Yuanyuan Zhong <yzhong@purestorage.com> Acked-by: Suren Baghdasaryan <surenb@google.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
This commit is contained in:
parent
6a4b3551ba
commit
780138b123
@ -244,17 +244,6 @@ static void shutdown_mem_profiling(bool remove_file)
|
|||||||
mem_profiling_support = false;
|
mem_profiling_support = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void __init procfs_init(void)
|
|
||||||
{
|
|
||||||
if (!mem_profiling_support)
|
|
||||||
return;
|
|
||||||
|
|
||||||
if (!proc_create_seq(ALLOCINFO_FILE_NAME, 0400, NULL, &allocinfo_seq_op)) {
|
|
||||||
pr_err("Failed to create %s file\n", ALLOCINFO_FILE_NAME);
|
|
||||||
shutdown_mem_profiling(false);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void __init alloc_tag_sec_init(void)
|
void __init alloc_tag_sec_init(void)
|
||||||
{
|
{
|
||||||
struct alloc_tag *last_codetag;
|
struct alloc_tag *last_codetag;
|
||||||
@ -762,19 +751,34 @@ static int __init alloc_tag_init(void)
|
|||||||
};
|
};
|
||||||
int res;
|
int res;
|
||||||
|
|
||||||
|
sysctl_init();
|
||||||
|
|
||||||
|
if (!mem_profiling_support) {
|
||||||
|
pr_info("Memory allocation profiling is not supported!\n");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!proc_create_seq(ALLOCINFO_FILE_NAME, 0400, NULL, &allocinfo_seq_op)) {
|
||||||
|
pr_err("Failed to create %s file\n", ALLOCINFO_FILE_NAME);
|
||||||
|
shutdown_mem_profiling(false);
|
||||||
|
return -ENOMEM;
|
||||||
|
}
|
||||||
|
|
||||||
res = alloc_mod_tags_mem();
|
res = alloc_mod_tags_mem();
|
||||||
if (res)
|
if (res) {
|
||||||
|
pr_err("Failed to reserve address space for module tags, errno = %d\n", res);
|
||||||
|
shutdown_mem_profiling(true);
|
||||||
return res;
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
alloc_tag_cttype = codetag_register_type(&desc);
|
alloc_tag_cttype = codetag_register_type(&desc);
|
||||||
if (IS_ERR(alloc_tag_cttype)) {
|
if (IS_ERR(alloc_tag_cttype)) {
|
||||||
|
pr_err("Allocation tags registration failed, errno = %ld\n", PTR_ERR(alloc_tag_cttype));
|
||||||
free_mod_tags_mem();
|
free_mod_tags_mem();
|
||||||
|
shutdown_mem_profiling(true);
|
||||||
return PTR_ERR(alloc_tag_cttype);
|
return PTR_ERR(alloc_tag_cttype);
|
||||||
}
|
}
|
||||||
|
|
||||||
sysctl_init();
|
|
||||||
procfs_init();
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
module_init(alloc_tag_init);
|
module_init(alloc_tag_init);
|
||||||
|
Loading…
Reference in New Issue
Block a user