Somehow the two branches in __slab_alloc do the same.
Unify them.

Signed-off-by: Christoph Lameter <c...@linux.com>

Index: linux/mm/slub.c
===================================================================
--- linux.orig/mm/slub.c
+++ linux/mm/slub.c
@@ -2280,12 +2280,8 @@ redo:
                if (node != NUMA_NO_NODE && !node_present_pages(node))
                        searchnode = node_to_mem_node(node);
 
-               if (unlikely(!node_match(page, searchnode))) {
-                       stat(s, ALLOC_NODE_MISMATCH);
-                       deactivate_slab(s, page, c->freelist);
-                       c->page = NULL;
-                       c->freelist = NULL;
-                       goto new_slab;
+               if (unlikely(!node_match(page, searchnode)))
+                       goto deactivate;
                }
        }
 
@@ -2294,12 +2290,8 @@ redo:
         * PFMEMALLOC but right now, we are losing the pfmemalloc
         * information when the page leaves the per-cpu allocator
         */
-       if (unlikely(!pfmemalloc_match(page, gfpflags))) {
-               deactivate_slab(s, page, c->freelist);
-               c->page = NULL;
-               c->freelist = NULL;
-               goto new_slab;
-       }
+       if (unlikely(!pfmemalloc_match(page, gfpflags)))
+               goto deactivate;
 
        /* must check again c->freelist in case of cpu migration or IRQ */
        freelist = c->freelist;
@@ -2328,6 +2320,11 @@ load_freelist:
        local_irq_restore(flags);
        return freelist;
 
+deactivate:
+       deactivate_slab(s, page, c->freelist);
+       c->page = NULL;
+       c->freelist = NULL;
+
 new_slab:
 
        if (c->partial) {

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to