linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
From: Shuah Khan <shuah.khan@hp.com>
To: "Christoph Lameter (Open Source)" <cl@linux.com>
Cc: penberg@kernel.org, glommer@parallels.com, js1304@gmail.com,
	David Rientjes <rientjes@google.com>,
	linux-mm@kvack.org, LKML <linux-kernel@vger.kernel.org>,
	Andrew Morton <akpm@linux-foundation.org>,
	Linus Torvalds <torvalds@linux-foundation.org>,
	shuahkhan@gmail.com
Subject: Re: [PATCH v2] mm: Restructure kmem_cache_create() to move debug cache integrity checks into a new function
Date: Thu, 09 Aug 2012 11:01:35 -0600	[thread overview]
Message-ID: <1344531695.2393.27.camel@lorien2> (raw)
In-Reply-To: <alpine.DEB.2.02.1208090911100.15909@greybox.home>

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

  reply	other threads:[~2012-08-09 17:01 UTC|newest]

Thread overview: 37+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-07-13 23:12 [PATCH TRIVIAL] mm: Fix build warning in kmem_cache_create() Shuah Khan
2012-07-14  9:18 ` David Rientjes
2012-07-14 12:01   ` Pekka Enberg
2012-07-16  3:04     ` Shuah Khan
2012-07-16  9:58       ` David Rientjes
2012-07-16 14:17         ` Christoph Lameter
2012-07-16 15:56           ` Shuah Khan
2012-07-16 19:58           ` David Rientjes
2012-07-16 20:14             ` Christoph Lameter
2012-07-16 23:48               ` David Rientjes
2012-07-17 14:36                 ` Christoph Lameter
2012-07-17 14:46                   ` Pekka Enberg
2012-07-17 15:11                     ` Christoph Lameter
2012-07-23  7:04                       ` Glauber Costa
2012-07-25 15:28                         ` Christoph Lameter
2012-07-17 16:52                     ` Shuah Khan
2012-07-30 10:18 ` Pekka Enberg
2012-07-30 19:56   ` David Rientjes
2012-07-30 20:41     ` Pekka Enberg
2012-07-31  2:07       ` David Rientjes
2012-07-31  6:05         ` Pekka Enberg
2012-08-06  3:41   ` Shuah Khan
2012-08-06 15:14     ` [PATCH RESEND] mm: Restructure kmem_cache_create() to move debug cache integrity checks into a new function Shuah Khan
2012-08-06 16:49       ` JoonSoo Kim
2012-08-06 17:03         ` Shuah Khan
2012-08-06 21:13           ` [PATCH v2] " Shuah Khan
2012-08-09 14:06             ` Shuah Khan
2012-08-09 14:13             ` Christoph Lameter (Open Source)
2012-08-09 17:01               ` Shuah Khan [this message]
2012-08-09 19:08                 ` Christoph Lameter (Open Source)
2012-08-09 19:33                   ` Shuah Khan
2012-08-12 16:40                     ` [PATCH v3] " Shuah Khan
2012-08-12 17:36                       ` Christoph
2012-08-15 23:53                       ` Andrew Morton
2012-08-16  6:40                         ` Pekka Enberg
2012-08-08 14:14           ` [PATCH RESEND] " Christoph Lameter (Open Source)
2012-08-08 15:13             ` Shuah Khan

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1344531695.2393.27.camel@lorien2 \
    --to=shuah.khan@hp.com \
    --cc=akpm@linux-foundation.org \
    --cc=cl@linux.com \
    --cc=glommer@parallels.com \
    --cc=js1304@gmail.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=penberg@kernel.org \
    --cc=rientjes@google.com \
    --cc=shuahkhan@gmail.com \
    --cc=torvalds@linux-foundation.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).