Commit daa8af80 authored by Sumanth Korikkar's avatar Sumanth Korikkar Committed by Alexander Gordeev
Browse files

s390/mm: Allocate page table with PAGE_SIZE granularity



Make vmem_pte_alloc() consistent by always allocating page table of
PAGE_SIZE granularity, regardless of whether page_table_alloc() (with
slab) or memblock_alloc() is used. This ensures page table can be fully
freed when the corresponding page table entries are removed.

Fixes: d08d4e7c ("s390/mm: use full 4KB page for 2KB PTE")
Reviewed-by: default avatarHeiko Carstens <hca@linux.ibm.com>
Reviewed-by: default avatarAlexander Gordeev <agordeev@linux.ibm.com>
Signed-off-by: default avatarSumanth Korikkar <sumanthk@linux.ibm.com>
Signed-off-by: default avatarAlexander Gordeev <agordeev@linux.ibm.com>
parent 10dd5a00
Loading
Loading
Loading
Loading
+2 −3
Original line number Diff line number Diff line
@@ -64,13 +64,12 @@ void *vmem_crst_alloc(unsigned long val)

pte_t __ref *vmem_pte_alloc(void)
{
	unsigned long size = PTRS_PER_PTE * sizeof(pte_t);
	pte_t *pte;

	if (slab_is_available())
		pte = (pte_t *)page_table_alloc(&init_mm);
	else
		pte = (pte_t *) memblock_alloc(size, size);
		pte = (pte_t *)memblock_alloc(PAGE_SIZE, PAGE_SIZE);
	if (!pte)
		return NULL;
	memset64((u64 *)pte, _PAGE_INVALID, PTRS_PER_PTE);