Browse Source

slub: Remove BUG_ON() from ksize and omit checks for !SLUB_DEBUG

The BUG_ONs are useless since the pointer derefs will lead to
NULL deref errors anyways. Some of the checks are not necessary
if no debugging is possible.

Signed-off-by: Christoph Lameter <clameter@sgi.com>
Christoph Lameter 17 years ago
parent
commit
ae20bfda68
1 changed files with 2 additions and 4 deletions
  1. 2 4
      mm/slub.c

+ 2 - 4
mm/slub.c

@@ -2610,19 +2610,17 @@ size_t ksize(const void *object)
 	struct page *page;
 	struct page *page;
 	struct kmem_cache *s;
 	struct kmem_cache *s;
 
 
-	BUG_ON(!object);
 	if (unlikely(object == ZERO_SIZE_PTR))
 	if (unlikely(object == ZERO_SIZE_PTR))
 		return 0;
 		return 0;
 
 
 	page = virt_to_head_page(object);
 	page = virt_to_head_page(object);
-	BUG_ON(!page);
 
 
 	if (unlikely(!PageSlab(page)))
 	if (unlikely(!PageSlab(page)))
 		return PAGE_SIZE << compound_order(page);
 		return PAGE_SIZE << compound_order(page);
 
 
 	s = page->slab;
 	s = page->slab;
-	BUG_ON(!s);
 
 
+#ifdef CONFIG_SLUB_DEBUG
 	/*
 	/*
 	 * Debugging requires use of the padding between object
 	 * Debugging requires use of the padding between object
 	 * and whatever may come after it.
 	 * and whatever may come after it.
@@ -2630,6 +2628,7 @@ size_t ksize(const void *object)
 	if (s->flags & (SLAB_RED_ZONE | SLAB_POISON))
 	if (s->flags & (SLAB_RED_ZONE | SLAB_POISON))
 		return s->objsize;
 		return s->objsize;
 
 
+#endif
 	/*
 	/*
 	 * If we have the need to store the freelist pointer
 	 * If we have the need to store the freelist pointer
 	 * back there or track user information then we can
 	 * back there or track user information then we can
@@ -2637,7 +2636,6 @@ size_t ksize(const void *object)
 	 */
 	 */
 	if (s->flags & (SLAB_DESTROY_BY_RCU | SLAB_STORE_USER))
 	if (s->flags & (SLAB_DESTROY_BY_RCU | SLAB_STORE_USER))
 		return s->inuse;
 		return s->inuse;
-
 	/*
 	/*
 	 * Else we can use all the padding etc for the allocation
 	 * Else we can use all the padding etc for the allocation
 	 */
 	 */