浏览代码

slob: fix gfp flags for order-0 page allocations

kmalloc_node() may allocate higher order slob pages, but the __GFP_COMP
bit is only passed to the page allocator and not represented in the
tracepoint event.  The bit should be passed to trace_kmalloc_node() as
well.

Acked-by: Matt Mackall <mpm@selenic.com>
Reviewed-by: Christoph Lameter <cl@linux.com>
Signed-off-by: David Rientjes <rientjes@google.com>
Signed-off-by: Pekka Enberg <penberg@kernel.org>
David Rientjes 14 年之前
父节点
当前提交
8df275af8d
共有 1 个文件被更改,包括 3 次插入1 次删除
  1. 3 1
      mm/slob.c

+ 3 - 1
mm/slob.c

@@ -500,7 +500,9 @@ void *__kmalloc_node(size_t size, gfp_t gfp, int node)
 	} else {
 	} else {
 		unsigned int order = get_order(size);
 		unsigned int order = get_order(size);
 
 
-		ret = slob_new_pages(gfp | __GFP_COMP, get_order(size), node);
+		if (likely(order))
+			gfp |= __GFP_COMP;
+		ret = slob_new_pages(gfp, order, node);
 		if (ret) {
 		if (ret) {
 			struct page *page;
 			struct page *page;
 			page = virt_to_page(ret);
 			page = virt_to_page(ret);