From: Jens Axboe <axboe@suse.de>
To: Jesper Juhl <juhl-lkml@dif.dk>
Cc: linux-kernel <linux-kernel@vger.kernel.org>,
Katrina Tsipenyuk <ytsipenyuk@fortifysoftware.com>,
katrina@fortifysoftware.com,
Mark Hemment <markhe@nextd.demon.co.uk>,
akpm@osdl.org
Subject: Re: [PATCH][2/2] fix unchecked returns from kmalloc() (in mm/slab.c)
Date: Tue, 7 Dec 2004 22:32:17 +0100 [thread overview]
Message-ID: <20041207213216.GE10083@suse.de> (raw)
In-Reply-To: <Pine.LNX.4.61.0412072237440.3320@dragon.hygekrogen.localhost>
On Tue, Dec 07 2004, Jesper Juhl wrote:
> On Tue, 7 Dec 2004, Jens Axboe wrote:
>
> > On Tue, Dec 07 2004, Jesper Juhl wrote:
> > >
> > > Problem reported by Katrina Tsipenyuk and the Fortify Software engineering
> > > team in thread with subject "PROBLEM: unchecked returns from kmalloc() in
> > > linux-2.6.10-rc2".
> > >
> > > Unfortunately I'm not very familliar with the code in question, and since
> > > I didn't find a really good way to deal with a failing kmalloc() here I
> > > settled for second best which is to add a BUG_ON() in case kmalloc fails.
> > > This will at least crash in a sane way at the point the problem occoures
> > > rather than getting strange problems at a (possibly) later time. If
> > > someone who's familliar with how this code works has a better solution
> > > then please step forward :) but in the mean time I think this is at least
> > > a slight improvement over the current situation.
> > >
> > > Patch has been compile tested and boot tested and didn't blow up
> > > instantly, but please review before applying.
> > >
> > >
> > > Signed-off-by: Jesper Juhl <juhl-lkml@dif.dk>
> > >
> > > diff -up linux-2.6.10-rc3-bk2-orig/mm/slab.c linux-2.6.10-rc3-bk2/mm/slab.c
> > > --- linux-2.6.10-rc3-bk2-orig/mm/slab.c 2004-12-06 22:24:56.000000000 +0100
> > > +++ linux-2.6.10-rc3-bk2/mm/slab.c 2004-12-07 21:27:20.000000000 +0100
> > > @@ -804,6 +804,7 @@ void __init kmem_cache_init(void)
> > > void * ptr;
> > >
> > > ptr = kmalloc(sizeof(struct arraycache_init), GFP_KERNEL);
> > > + BUG_ON(ptr == NULL); /* FIXME: Can a failed kmalloc be handled better? */
> > > local_irq_disable();
> > > BUG_ON(ac_data(&cache_cache) != &initarray_cache.cache);
> > > memcpy(ptr, ac_data(&cache_cache), sizeof(struct arraycache_init));
> >
> > This is pointless, as a NULL deref on memcpy will give you the exact
> > same info.
> >
> Hmm, now why didn't I think of that. Thanks Jens.
> I guess I'm not up to the task of fixing this one. I'll try looking
> harder, but I don't think I can do better in this case.
See my next mail, I'm not so sure there's anything worth fixing. If
there was no fear of it being misused, perhaps GFP_PANIC would be a
proper way to flag that this really should not fail.
--
Jens Axboe
next prev parent reply other threads:[~2004-12-07 21:34 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2004-12-07 21:23 [PATCH][2/2] fix unchecked returns from kmalloc() (in mm/slab.c) Jesper Juhl
2004-12-07 21:26 ` Jens Axboe
2004-12-07 21:40 ` Jesper Juhl
2004-12-07 21:32 ` Jens Axboe [this message]
2004-12-07 22:51 ` Jesper Juhl
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=20041207213216.GE10083@suse.de \
--to=axboe@suse.de \
--cc=akpm@osdl.org \
--cc=juhl-lkml@dif.dk \
--cc=katrina@fortifysoftware.com \
--cc=linux-kernel@vger.kernel.org \
--cc=markhe@nextd.demon.co.uk \
--cc=ytsipenyuk@fortifysoftware.com \
/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.