Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 37f08dda authored by Vladimir Davydov's avatar Vladimir Davydov Committed by Linus Torvalds
Browse files

vmalloc: allow to account vmalloc to memcg



Make vmalloc family functions allocate vmalloc area pages with
alloc_kmem_pages so that if __GFP_ACCOUNT is set they will be accounted
to memcg.  This is needed, at least, to account alloc_fdmem allocations.

Signed-off-by: default avatarVladimir Davydov <vdavydov@virtuozzo.com>
Acked-by: default avatarJohannes Weiner <hannes@cmpxchg.org>
Cc: Michal Hocko <mhocko@kernel.org>
Cc: Tejun Heo <tj@kernel.org>
Cc: Greg Thelen <gthelen@google.com>
Cc: Christoph Lameter <cl@linux.com>
Cc: Pekka Enberg <penberg@kernel.org>
Cc: David Rientjes <rientjes@google.com>
Cc: Joonsoo Kim <iamjoonsoo.kim@lge.com>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent 230e9fc2
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -1477,7 +1477,7 @@ static void __vunmap(const void *addr, int deallocate_pages)
			struct page *page = area->pages[i];

			BUG_ON(!page);
			__free_page(page);
			__free_kmem_pages(page, 0);
		}

		if (area->flags & VM_VPAGES)
@@ -1608,9 +1608,9 @@ static void *__vmalloc_area_node(struct vm_struct *area, gfp_t gfp_mask,
		struct page *page;

		if (node == NUMA_NO_NODE)
			page = alloc_page(alloc_mask);
			page = alloc_kmem_pages(alloc_mask, order);
		else
			page = alloc_pages_node(node, alloc_mask, order);
			page = alloc_kmem_pages_node(node, alloc_mask, order);

		if (unlikely(!page)) {
			/* Successfully allocated i pages, free them in __vunmap() */