Some architectures may want to allocate the __kfence_pool differently for example, allocate the __kfence_pool earlier before paging_init(). We also delay the memset() to kfence_init_pool(). Signed-off-by: Jisheng Zhang <Jisheng.Zhang@xxxxxxxxxxxxx> --- mm/kfence/core.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/mm/kfence/core.c b/mm/kfence/core.c index e18fbbd5d9b4..65f0210edb65 100644 --- a/mm/kfence/core.c +++ b/mm/kfence/core.c @@ -430,6 +430,8 @@ static bool __init kfence_init_pool(void) if (!__kfence_pool) return false; + memset(__kfence_pool, 0, KFENCE_POOL_SIZE); + if (!arch_kfence_init_pool()) goto err; @@ -645,10 +647,10 @@ static DECLARE_DELAYED_WORK(kfence_timer, toggle_allocation_gate); void __init kfence_alloc_pool(void) { - if (!kfence_sample_interval) + if (!kfence_sample_interval || __kfence_pool) return; - __kfence_pool = memblock_alloc(KFENCE_POOL_SIZE, PAGE_SIZE); + __kfence_pool = memblock_alloc_raw(KFENCE_POOL_SIZE, PAGE_SIZE); if (!__kfence_pool) pr_err("failed to allocate pool\n"); -- 2.31.0