lkml.org 
[lkml]   [2009]   [May]   [4]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [PATCH -tip] mm: introduce __GFP_PANIC modifier
On Mon, 4 May 2009 23:21:17 +0400
Cyrill Gorcunov <gorcunov@gmail.com> wrote:

> [Andrew Morton - Mon, May 04, 2009 at 11:53:35AM -0700]
> | On Mon, 4 May 2009 09:47:45 -0400 (EDT)
> | Christoph Lameter <cl@linux.com> wrote:
> |
> | >
> | >
> | > Could you try to avoid consuming another GFP flag? __GFP_BITS_SHIFT is
> | > used elsewhere to figure out where to put miscellanous flags into the gfp
> | > mask. This is pretty limited right now and so the patch does work.
> |
> | hm, yes, there are seven bits left.
> |
> | afaict bit 3 (0x08) is unused?
> |
> | Is __GFP_PANIC very useful? I expect it will permit a very small code
> | saving at a relatively small number of callsites, all of which are
> | __init anyway?
> |
>
> Actually the issue with possible NULL deref already fixed in -tip
> tree commit 9a8709d. There was rather an idea on what will be more
> convenient -- call for __GFP_NOFAIL or use BUG_ON on allocation
> failure or call kmalloc with __GFP_PANIC and forget about if it could
> fail :). Since Christoph said that it's discommended to introduce
> new flag -- I'm fine with that.
>

Well. Allowing the caller to dereference the NULL pointer is a good
solution. It gives us the runtime behaviour we want, and requires no
new code at all. Usages of this technique should be commented so that
people don't "fix" it.


An alternative to __GFP_PANIC might be:

- foo = kmalloc(size, GFP_KERNEL);
+ foo = panic_if_null(kmalloc(size, GFP_KERNEL));

void *panic_if_null(void *p)
{
if (unlikely(p == NULL))
panic("NULL pointer panic");
return p;
}


\
 
 \ /
  Last update: 2009-05-04 21:45    [W:0.053 / U:0.308 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site