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
    [Andrew Morton - Mon, May 04, 2009 at 12:34:53PM -0700]
    | 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;
    | }
    |

    Yes, it's simple and elegant but at this point I'm not
    going to bring this one -- I could be just shot :)

    -- Cyrill


    \
     
     \ /
      Last update: 2009-05-04 22:11    [W:0.022 / U:29.320 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site