|
@@ -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
|
|
*/
|
|
*/
|