Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

s390/kfence: Split kfence pool into 4k mappings in arch_kfence_init_pool()

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>

+3 -15
+3 -14
arch/s390/include/asm/kfence.h
··· 12 12 13 13 static __always_inline bool arch_kfence_init_pool(void) 14 14 { 15 - return true; 16 - } 17 - 18 - #define arch_kfence_test_address(addr) ((addr) & PAGE_MASK) 19 - 20 - /* 21 - * Do not split kfence pool to 4k mapping with arch_kfence_init_pool(), 22 - * but earlier where page table allocations still happen with memblock. 23 - * Reason is that arch_kfence_init_pool() gets called when the system 24 - * is still in a limbo state - disabling and enabling bottom halves is 25 - * not yet allowed, but that is what our page_table_alloc() would do. 26 - */ 27 - static __always_inline void kfence_split_mapping(void) 28 - { 29 15 #ifdef CONFIG_KFENCE 30 16 unsigned long pool_pages = KFENCE_POOL_SIZE >> PAGE_SHIFT; 31 17 32 18 set_memory_4k((unsigned long)__kfence_pool, pool_pages); 33 19 #endif 20 + return true; 34 21 } 22 + 23 + #define arch_kfence_test_address(addr) ((addr) & PAGE_MASK) 35 24 36 25 static inline bool kfence_protect_page(unsigned long addr, bool protect) 37 26 {
-1
arch/s390/mm/init.c
··· 175 175 high_memory = (void *) __va(max_low_pfn * PAGE_SIZE); 176 176 177 177 pv_init(); 178 - kfence_split_mapping(); 179 178 180 179 /* this will put all low memory onto the freelists */ 181 180 memblock_free_all();