|
@@ -2261,9 +2261,11 @@ kmem_cache_create (const char *name, size_t size, size_t align,
|
|
|
/*
|
|
|
* Determine if the slab management is 'on' or 'off' slab.
|
|
|
* (bootstrapping cannot cope with offslab caches so don't do
|
|
|
- * it too early on.)
|
|
|
+ * it too early on. Always use on-slab management when
|
|
|
+ * SLAB_NOLEAKTRACE to avoid recursive calls into kmemleak)
|
|
|
*/
|
|
|
- if ((size >= (PAGE_SIZE >> 3)) && !slab_early_init)
|
|
|
+ if ((size >= (PAGE_SIZE >> 3)) && !slab_early_init &&
|
|
|
+ !(flags & SLAB_NOLEAKTRACE))
|
|
|
/*
|
|
|
* Size is large, assume best to place the slab management obj
|
|
|
* off-slab (should allow better packing of objs).
|