Commit caa3cd5c authored by Vasily Gorbik's avatar Vasily Gorbik
Browse files

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



Since commit d08d4e7c ("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: default avatarHeiko Carstens <hca@linux.ibm.com>
Signed-off-by: default avatarVasily Gorbik <gor@linux.ibm.com>
parent d93a855c
Loading
Loading
Loading
Loading
+3 −14
Original line number Diff line number Diff line
@@ -11,28 +11,17 @@
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);
+0 −1
Original line number Diff line number Diff line
@@ -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();