From 6f688ce93569fe4a9b260ebf299befbde15f3cb0 Mon Sep 17 00:00:00 2001 From: Liu Shixin Date: Sat, 28 May 2022 17:57:24 +0800 Subject: [PATCH] kfence: parse param before alloc kfence_pool hulk inclusion category: bugfix bugzilla: 186414, https://gitee.com/openeuler/kernel/issues/I53YXV CVE: NA -------------------------------- Patch 1919867e8bad advanced the allocation of kfence_pool to setup_arch(). Since the macro module_param_cb is parsed after setup_arch(), it's invalid to set sample_interval and num_objects in cmdline. Add macro early_param to parse the cmdline to make it effective before the allocation of kfence_pool. Fixes: 1919867e8bad ("arm64: remove page granularity limitation from KFENCE") Conflicts: mm/kfence/core.c Signed-off-by: Liu Shixin Reviewed-by: Kefeng Wang Signed-off-by: Zheng Zengkai --- mm/kfence/core.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/mm/kfence/core.c b/mm/kfence/core.c index 370721509958..144e8da3101d 100644 --- a/mm/kfence/core.c +++ b/mm/kfence/core.c @@ -85,6 +85,19 @@ static const struct kernel_param_ops sample_interval_param_ops = { }; module_param_cb(sample_interval, &sample_interval_param_ops, &kfence_sample_interval, 0600); +#ifdef CONFIG_ARM64 +static int __init parse_sample_interval(char *str) +{ + unsigned long num; + + if (kstrtoul(str, 0, &num) < 0) + return 0; + kfence_sample_interval = num; + return 0; +} +early_param("kfence.sample_interval", parse_sample_interval); +#endif + /* Pool usage% threshold when currently covered allocations are skipped. */ static unsigned long kfence_skip_covered_thresh __read_mostly = 75; module_param_named(skip_covered_thresh, kfence_skip_covered_thresh, ulong, 0644); -- GitLab