]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
s390/kfence: Split kfence pool into 4k mappings in arch_kfence_init_pool()
authorVasily Gorbik <gor@linux.ibm.com>
Thu, 13 Mar 2025 09:55:43 +0000 (10:55 +0100)
committerVasily Gorbik <gor@linux.ibm.com>
Tue, 18 Mar 2025 16:13:05 +0000 (17:13 +0100)
Since commit d08d4e7cd6bf ("s390/mm: use full 4KB page for 2KB PTE"),
there is no longer any reason to avoid splitting the kfence pool into
4k mappings in arch_kfence_init_pool(). Remove the architecture-specific
kfence_split_mapping().

Reviewed-by: Heiko Carstens <hca@linux.ibm.com>
Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
arch/s390/include/asm/kfence.h
arch/s390/mm/init.c

index e47fd8cbe70121f3f58a42b5ba37fe2265c02599..e95e35eb8a3f077458168c749b7ab4d247093384 100644 (file)
 void __kernel_map_pages(struct page *page, int numpages, int enable);
 
 static __always_inline bool arch_kfence_init_pool(void)
-{
-       return true;
-}
-
-#define arch_kfence_test_address(addr) ((addr) & PAGE_MASK)
-
-/*
- * Do not split kfence pool to 4k mapping with arch_kfence_init_pool(),
- * but earlier where page table allocations still happen with memblock.
- * Reason is that arch_kfence_init_pool() gets called when the system
- * is still in a limbo state - disabling and enabling bottom halves is
- * not yet allowed, but that is what our page_table_alloc() would do.
- */
-static __always_inline void kfence_split_mapping(void)
 {
 #ifdef CONFIG_KFENCE
        unsigned long pool_pages = KFENCE_POOL_SIZE >> PAGE_SHIFT;
 
        set_memory_4k((unsigned long)__kfence_pool, pool_pages);
 #endif
+       return true;
 }
 
+#define arch_kfence_test_address(addr) ((addr) & PAGE_MASK)
+
 static inline bool kfence_protect_page(unsigned long addr, bool protect)
 {
        __kernel_map_pages(virt_to_page((void *)addr), 1, !protect);
index 615ee245cb930dba1d625c16d9aadab50afad4cc..f4ac6950660835896870e046326f764ffe19befd 100644 (file)
@@ -175,7 +175,6 @@ void __init mem_init(void)
         high_memory = (void *) __va(max_low_pfn * PAGE_SIZE);
 
        pv_init();
-       kfence_split_mapping();
 
        /* this will put all low memory onto the freelists */
        memblock_free_all();