slub: Remove BUG_ON() from ksize and omit checks for !SLUB_DEBUG
authorChristoph Lameter <clameter@sgi.com>
Sat, 16 Feb 2008 07:45:25 +0000 (23:45 -0800)
committerChristoph Lameter <clameter@sgi.com>
Mon, 3 Mar 2008 20:22:31 +0000 (12:22 -0800)
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>
mm/slub.c

index b49570ca08b5de961332b466a9d2cfe959a84ecf..09b5dc82df58c0e9429868f58e62fabb3cc419d4 100644 (file)
--- a/mm/slub.c
+++ b/mm/slub.c
@@ -2610,19 +2610,17 @@ size_t ksize(const void *object)
        struct page *page;
        struct kmem_cache *s;
 
-       BUG_ON(!object);
        if (unlikely(object == ZERO_SIZE_PTR))
                return 0;
 
        page = virt_to_head_page(object);
-       BUG_ON(!page);
 
        if (unlikely(!PageSlab(page)))
                return PAGE_SIZE << compound_order(page);
 
        s = page->slab;
-       BUG_ON(!s);
 
+#ifdef CONFIG_SLUB_DEBUG
        /*
         * Debugging requires use of the padding between object
         * and whatever may come after it.
@@ -2630,6 +2628,7 @@ size_t ksize(const void *object)
        if (s->flags & (SLAB_RED_ZONE | SLAB_POISON))
                return s->objsize;
 
+#endif
        /*
         * If we have the need to store the freelist pointer
         * 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))
                return s->inuse;
-
        /*
         * Else we can use all the padding etc for the allocation
         */