slob: fix gfp flags for order-0 page allocations
authorDavid Rientjes <rientjes@google.com>
Sun, 22 Aug 2010 23:16:06 +0000 (16:16 -0700)
committerPekka Enberg <penberg@kernel.org>
Sat, 2 Oct 2010 07:24:28 +0000 (10:24 +0300)
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>
mm/slob.c

index d582171c81014c027227ddbb7b3916661ecb1ef8..617b6d6c42c7965f1f2ae513ef9f88b35573b314 100644 (file)
--- a/mm/slob.c
+++ b/mm/slob.c
@@ -500,7 +500,9 @@ void *__kmalloc_node(size_t size, gfp_t gfp, int node)
        } else {
                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) {
                        struct page *page;
                        page = virt_to_page(ret);