On Thu, 2012-08-09 at 09:13 -0500, Christoph Lameter (Open Source) wrote: > On Mon, 6 Aug 2012, Shuah Khan wrote: > > > +#ifdef CONFIG_DEBUG_VM > > +static int kmem_cache_sanity_check(const char *name, size_t size) > > Why do we pass "size" in? AFAICT there is no need to. It is an oversight on my part. Will re-work the patch as needed. Please see more on your second comment below. > > > @@ -53,48 +93,17 @@ struct kmem_cache *kmem_cache_create(const char *name, size_t size, size_t align > > { > > struct kmem_cache *s = NULL; > > > > -#ifdef CONFIG_DEBUG_VM > > if (!name || in_interrupt() || size < sizeof(void *) || > > size > KMALLOC_MAX_SIZE) { > > - printk(KERN_ERR "kmem_cache_create(%s) integrity check" > > - " failed\n", name); > > + pr_err("kmem_cache_create(%s) integrity check failed\n", name); > > goto out; > > } > > -#endif > > > > If you move the above code into the sanity check function then you will be > using the size as well. These are also sanity checks after all. Yes these are also sanity checks, however these checks are common to debug and non-debug paths, hence the reasoning to leave them in kmem_cache_create(). You are right, if these checks get moved into the debug section in kmem_cache_sanity_check, size will be used. Moving these checks into kmem_cache_sanity_check() would mean return path handling will change. The first block of sanity checks for name, and size etc. are done before holding the slab_mutex and the second block that checks the slab lists is done after holding the mutex. Depending on which one fails, return handling is going to be different in that if second block fails, mutex needs to be unlocked and when the first block fails, there is no need to do that. Nothing that is too complex to solve, just something that needs to be handled. Comments, thoughts on 1. just remove size from kmem_cache_sanity_check() parameters or 2. move first block sanity checks into kmem_cache_sanity_check() Personally I prefer the first option to avoid complexity in return path handling. Would like to hear what others think. -- Shuah -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxx. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>