Prechádzať zdrojové kódy

slub: Prepare inuse field in new_slab()

inuse will always be set to page->objects. There is no point in
initializing the field to zero in new_slab() and then overwriting
the value in __slab_alloc().

Signed-off-by: Christoph Lameter <cl@linux.com>
Signed-off-by: Pekka Enberg <penberg@kernel.org>
Christoph Lameter 14 rokov pred
rodič
commit
e6e82ea112
1 zmenil súbory, kde vykonal 2 pridanie a 3 odobranie
  1. 2 3
      mm/slub.c

+ 2 - 3
mm/slub.c

@@ -1447,7 +1447,7 @@ static struct page *new_slab(struct kmem_cache *s, gfp_t flags, int node)
 	set_freepointer(s, last, NULL);
 	set_freepointer(s, last, NULL);
 
 
 	page->freelist = start;
 	page->freelist = start;
-	page->inuse = 0;
+	page->inuse = page->objects;
 	page->frozen = 1;
 	page->frozen = 1;
 out:
 out:
 	return page;
 	return page;
@@ -2139,7 +2139,6 @@ new_slab:
 		 */
 		 */
 		object = page->freelist;
 		object = page->freelist;
 		page->freelist = NULL;
 		page->freelist = NULL;
-		page->inuse = page->objects;
 
 
 		stat(s, ALLOC_SLAB);
 		stat(s, ALLOC_SLAB);
 		c->node = page_to_nid(page);
 		c->node = page_to_nid(page);
@@ -2681,7 +2680,7 @@ static void early_kmem_cache_node_alloc(int node)
 	n = page->freelist;
 	n = page->freelist;
 	BUG_ON(!n);
 	BUG_ON(!n);
 	page->freelist = get_freepointer(kmem_cache_node, n);
 	page->freelist = get_freepointer(kmem_cache_node, n);
-	page->inuse++;
+	page->inuse = 1;
 	page->frozen = 0;
 	page->frozen = 0;
 	kmem_cache_node->node[node] = n;
 	kmem_cache_node->node[node] = n;
 #ifdef CONFIG_SLUB_DEBUG
 #ifdef CONFIG_SLUB_DEBUG