Commit 5671ce2a authored by Heiko Carstens's avatar Heiko Carstens Committed by Alexander Gordeev
Browse files

s390/mm: Use __GFP_ACCOUNT for user page table allocations



Add missing kmemcg accounting of user page table allocations.

Reviewed-by: default avatarAlexander Gordeev <agordeev@linux.ibm.com>
Signed-off-by: default avatarHeiko Carstens <hca@linux.ibm.com>
Signed-off-by: default avatarAlexander Gordeev <agordeev@linux.ibm.com>
parent e11727b2
Loading
Loading
Loading
Loading
+10 −3
Original line number Diff line number Diff line
@@ -16,9 +16,13 @@

unsigned long *crst_table_alloc(struct mm_struct *mm)
{
	struct ptdesc *ptdesc = pagetable_alloc(GFP_KERNEL, CRST_ALLOC_ORDER);
	gfp_t gfp = GFP_KERNEL_ACCOUNT;
	struct ptdesc *ptdesc;
	unsigned long *table;

	if (mm == &init_mm)
		gfp &= ~__GFP_ACCOUNT;
	ptdesc = pagetable_alloc(gfp, CRST_ALLOC_ORDER);
	if (!ptdesc)
		return NULL;
	table = ptdesc_to_virt(ptdesc);
@@ -117,7 +121,7 @@ struct ptdesc *page_table_alloc_pgste(struct mm_struct *mm)
	struct ptdesc *ptdesc;
	u64 *table;

	ptdesc = pagetable_alloc(GFP_KERNEL, 0);
	ptdesc = pagetable_alloc(GFP_KERNEL_ACCOUNT, 0);
	if (ptdesc) {
		table = (u64 *)ptdesc_to_virt(ptdesc);
		__arch_set_page_dat(table, 1);
@@ -136,10 +140,13 @@ void page_table_free_pgste(struct ptdesc *ptdesc)

unsigned long *page_table_alloc(struct mm_struct *mm)
{
	gfp_t gfp = GFP_KERNEL_ACCOUNT;
	struct ptdesc *ptdesc;
	unsigned long *table;

	ptdesc = pagetable_alloc(GFP_KERNEL, 0);
	if (mm == &init_mm)
		gfp &= ~__GFP_ACCOUNT;
	ptdesc = pagetable_alloc(gfp, 0);
	if (!ptdesc)
		return NULL;
	if (!pagetable_pte_ctor(mm, ptdesc)) {