[patch 05/10] SLUB: __slab_alloc() exit path consolidation

From: Christoph Lameter
Date: Sat Oct 27 2007 - 23:34:30 EST


Use a single exit path by using goto's to the hottest exit path.

Signed-off-by: Christoph Lameter <clameter@xxxxxxx>

---
mm/slub.c | 8 +++++---
1 file changed, 5 insertions(+), 3 deletions(-)

Index: linux-2.6/mm/slub.c
===================================================================
--- linux-2.6.orig/mm/slub.c 2007-10-25 19:38:14.000000000 -0700
+++ linux-2.6/mm/slub.c 2007-10-25 19:38:47.000000000 -0700
@@ -1493,7 +1493,9 @@ load_freelist:
c->page->inuse = s->objects;
c->page->freelist = NULL;
c->node = page_to_nid(c->page);
+unlock_out:
slab_unlock(c->page);
+out:
return object;

another_slab:
@@ -1541,7 +1543,8 @@ new_slab:
c->page = new;
goto load_freelist;
}
- return NULL;
+ object = NULL;
+ goto out;
debug:
object = c->page->freelist;
if (!alloc_debug_processing(s, c->page, object, addr))
@@ -1550,8 +1553,7 @@ debug:
c->page->inuse++;
c->page->freelist = object[c->offset];
c->node = -1;
- slab_unlock(c->page);
- return object;
+ goto unlock_out;
}

/*

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