All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Jörn Engel" <joern@logfs.org>
To: Andrew Morton <akpm@linux-foundation.org>
Cc: kirjanov@gmail.com, linux-kernel@vger.kernel.org
Subject: Re: [PATCH 2/2] lib/btree: Fix possible NULL pointer dereference
Date: Fri, 14 May 2010 19:41:43 +0200	[thread overview]
Message-ID: <20100514174143.GB32417@logfs.org> (raw)
In-Reply-To: <20100513131907.a3373db2.akpm@linux-foundation.org>

On Thu, 13 May 2010 13:19:07 -0700, Andrew Morton wrote:
> On Thu, 13 May 2010 01:20:27 +0400
> "Denis Kirjanov <kirjanov@gmail.com" <kirjanov@gmail.com> wrote:
> 
> > mempool_alloc can return null in atomic case.
> > 
> > Signed-off-by: Denis Kirjanov <kirjanov@gmail.com>
> > ---
> > diff --git a/lib/btree.c b/lib/btree.c
> > index 41859a8..542c904 100644
> > --- a/lib/btree.c
> > +++ b/lib/btree.c
> > @@ -95,7 +94,8 @@ static unsigned long *btree_node_alloc(struct btree_head *head, gfp_t gfp)
> >  	unsigned long *node;
> >  
> >  	node = mempool_alloc(head->mempool, gfp);
> > -	memset(node, 0, NODESIZE);
> > +	if (likely(node))
> > +		memset(node, 0, NODESIZE);
> >  	return node;
> >  }
> 
> hm, why is btree.c using mempools?  mempools are only appropriate when
> it is known that objects will become available if the allocating task
> simply waits for a while.  Typically, things like BIOs and
> request-structs.  Simply waiting for the disk to complete some IO will
> cause some objects to be returned to the mempool.

For the current caller (logfs), that is a fairly accurate description.

> If waiting-and-doing-nothing fails to cause objects to be returned to
> the pool then the mempool code can lock up.

True.  And I am not 100% sure logfs is bug-free in that respect.  One
item on my todo list is to add some sort of mempool_prefill() that
either ensures pool->curr_nr == pool->min_nr or returns -ENOMEM.  That
would allow logfs start some writeback and wait for the flash, when
necessary.

Jörn

-- 
When in doubt, punt.  When somebody actually complains, go back and fix it...
The 90% solution is a good thing.
-- Rob Landley

      reply	other threads:[~2010-05-14 17:41 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-05-12 21:20 [PATCH 2/2] lib/btree: Fix possible NULL pointer dereference Denis Kirjanov <kirjanov@gmail.com
2010-05-13 20:19 ` Andrew Morton
2010-05-14 17:41   ` Jörn Engel [this message]

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=20100514174143.GB32417@logfs.org \
    --to=joern@logfs.org \
    --cc=akpm@linux-foundation.org \
    --cc=kirjanov@gmail.com \
    --cc=linux-kernel@vger.kernel.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.