|
@@ -84,31 +84,12 @@ EXPORT_SYMBOL(kmem_cache_size);
|
|
|
#ifdef CONFIG_DEBUG_VM
|
|
|
static int kmem_cache_sanity_check(const char *name, unsigned int size)
|
|
|
{
|
|
|
- struct kmem_cache *s = NULL;
|
|
|
-
|
|
|
if (!name || in_interrupt() || size < sizeof(void *) ||
|
|
|
size > KMALLOC_MAX_SIZE) {
|
|
|
pr_err("kmem_cache_create(%s) integrity check failed\n", name);
|
|
|
return -EINVAL;
|
|
|
}
|
|
|
|
|
|
- list_for_each_entry(s, &slab_caches, list) {
|
|
|
- char tmp;
|
|
|
- int res;
|
|
|
-
|
|
|
- /*
|
|
|
- * This happens when the module gets unloaded and doesn't
|
|
|
- * destroy its slab cache and no-one else reuses the vmalloc
|
|
|
- * area of the module. Print a warning.
|
|
|
- */
|
|
|
- res = probe_kernel_address(s->name, tmp);
|
|
|
- if (res) {
|
|
|
- pr_err("Slab cache with size %u has lost its name\n",
|
|
|
- s->object_size);
|
|
|
- continue;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
WARN_ON(strchr(name, ' ')); /* It confuses parsers */
|
|
|
return 0;
|
|
|
}
|