linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
From: Thomas Gleixner <tglx@linutronix.de>
To: Jeff Layton <jlayton@redhat.com>
Cc: Boaz Harrosh <bharrosh@panasas.com>,
	"Myklebust, Trond" <Trond.Myklebust@netapp.com>,
	Steve Dickson <SteveD@redhat.com>,
	"linux-nfs@vger.kernel.org" <linux-nfs@vger.kernel.org>,
	Peter Zijlstra <peterz@infradead.org>,
	linux-mm@kvack.org
Subject: Re: [PATCH] sunrpc: initialize delayed work on each rpc_inode allocation
Date: Tue, 31 Jan 2012 22:56:05 +0100 (CET)	[thread overview]
Message-ID: <alpine.LFD.2.02.1201312231311.6143@ionos> (raw)
In-Reply-To: <20120131101216.00788753@tlielax.poochiereds.net>

On Tue, 31 Jan 2012, Jeff Layton wrote:

> On Tue, 31 Jan 2012 16:54:44 +0200
> Boaz Harrosh <bharrosh@panasas.com> wrote:
> 
> > On 01/31/2012 01:57 AM, Jeff Layton wrote:
> > >     WARNING: at lib/debugobjects.c:262 debug_print_object+0x8c/0xb0()
> > > 
> > > For now, this patch is really just papering over that problem, but it
> > > should be "mostly harmless". That said, I'm ok with dropping it if
> > > Thomas is planning to fix this in the debugobjects code however.
> > > 
> > 
> > I disagree it's harmless. What if kmem_cache_free/kmem_cache_alloc deploys
> > a poisoning schema, in debug mode. Which stumps over memory. Is it
> > initialized then?
> > 
> 
> Different slab allocators handle that differently. As best I can tell:
> 
> SLAB: calls ctor on the poisoned object before handing it back out
> 
> SLUB: avoids poisoning the object if there's a ->ctor defined

Brilliant. Preventing debug code from catching bugs is really a great
idea. This needs to be fixed ASAP.
 
> SLOB: I'm not sure -- haven't looked at it
> 
> > What was the last state of the timer, is it safe for resume?
> > 
> 
> Yes, either way it's safe to reuse the recycled object, aside from the
> problem with debugobjects. If it's not then that's clearly a bug in the
> slab allocator.
> > For us this is a new object we should initialize it.
> > 
> 
> I tend to agree that not relying on slab ctor functions is preferable.
> They are widely used though so this problem almost assuredly exists in
> other places besides just rpc_pipefs. If it's not fixed in the
> debugobjects code (or the slab allocators) then I wouldn't be surprised
> if this popped up again in another area.

There is nothing the debugobjects code can do about this. The
indication for removing the object from the hash is the
kmem_cache_free() operation and from that point on the object is not
longer usable. That's correct and it's not going to change.

The correct solution to this problem is to do the following:

Extend the kmemcache with a debug_ctor() callback. 

In case of slab poisoning make it call ctor().

In case of debugobjects (w/o slab poisoning) make it a function which
reinitializes the timer or what ever subobject which needs an explicit
state check. In case of timers this should be a separate function
(e.g. timer_reinit()) which soleley makes the timer known to the debug
code again.

Thanks,

	tglx

--
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/ .
Fight unfair telecom internet charges in Canada: sign http://stopthemeter.ca/
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

           reply	other threads:[~2012-01-31 21:56 UTC|newest]

Thread overview: expand[flat|nested]  mbox.gz  Atom feed
 [parent not found: <20120131101216.00788753@tlielax.poochiereds.net>]

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=alpine.LFD.2.02.1201312231311.6143@ionos \
    --to=tglx@linutronix.de \
    --cc=SteveD@redhat.com \
    --cc=Trond.Myklebust@netapp.com \
    --cc=bharrosh@panasas.com \
    --cc=jlayton@redhat.com \
    --cc=linux-mm@kvack.org \
    --cc=linux-nfs@vger.kernel.org \
    --cc=peterz@infradead.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).