Re: [PATCH RESEND] mm: Restructure kmem_cache_create() to move debug cache integrity checks into a new function
From: Shuah Khan <hidden>
Date: 2012-08-06 17:03:38
Also in:
lkml
On Tue, 2012-08-07 at 01:49 +0900, JoonSoo Kim wrote:
quoted
diff --git a/mm/slab_common.c b/mm/slab_common.c index 12637ce..08bc2a4 100644 --- a/mm/slab_common.c +++ b/mm/slab_common.c@@ -23,6 +23,41 @@ enum slab_state slab_state; LIST_HEAD(slab_caches); DEFINE_MUTEX(slab_mutex); +static int kmem_cache_sanity_check(const char *name, size_t size) +{ +#ifdef CONFIG_DEBUG_VM + struct kmem_cache *s = NULL; + + 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 %d has lost its name\n", + s->object_size); + continue; + } + + if (!strcmp(s->name, name)) { + pr_err("%s (%s): Cache name already exists.\n", + __func__, name); + dump_stack(); + s = NULL; + return -EINVAL; + } + } + + WARN_ON(strchr(name, ' ')); /* It confuses parsers */ +#endif + return 0; +}As I know, following is more preferable than above. #ifdef CONFIG_DEBUG_VM static int kmem_cache_sanity_check(const char *name, size_t size); #else static inline int kmem_cache_sanity_check(const char *name, size_t size) { return 0; } #endif Is there any reason to do like that? Thanks.
No reason, just something I am used to doing :) inline is a good idea. I can fix that easily and send v2 patch. -- Shuah -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@kvack.org. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>