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        2014-12-08 13:24:05.193185492 -0600
+++ linux/mm/slub.c     2014-12-09 12:23:11.927032128 -0600
@@ -2282,10 +2282,7 @@ redo:
 
                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;
+                       goto deactivate;
                }
        }
 
@@ -2294,12 +2291,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 +2321,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