This is v3 for (re-)enabling KFENCE. If CONFIG_CONTIG_ALLOC is not supported, we fallback to try alloc_pages_exact(). Allocating pages in this way has limits about MAX_ORDER (default 11). So we will not support allocating kfence pool after system startup with a large KFENCE_NUM_OBJECTS. When handling failures in kfence_init_pool_late(), we pair free_pages_exact() to alloc_pages_exact() for compatibility consideration, though it actually does the same as free_contig_range(). v3: Use alloc_pages_exact() instead of alloc_contig_pages() if CONFIG_CONTIG_ALLOC is not defined. v2: https://lore.kernel.org/all/20220305144858.17040-1-dtcccc@xxxxxxxxxxxxxxxxx/ Take KFENCE_WARN_ON() into account. Do not allow re-enabling KFENCE if it once disabled by warn. Modify func names and comments. RFC/v1: https://lore.kernel.org/all/20220303031505.28495-1-dtcccc@xxxxxxxxxxxxxxxxx/ Tianchen Ding (2): kfence: Allow re-enabling KFENCE after system startup kfence: Alloc kfence_pool after system startup mm/kfence/core.c | 126 +++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 105 insertions(+), 21 deletions(-) -- 2.27.0