• Dave Hansen's avatar
    include/linux/gfp.h: work around apparent sparse confusion · 15fa8f42
    Dave Hansen authored
    Running sparse on page_alloc.c today, it errors out:
            include/linux/gfp.h:254:17: error: bad constant expression
            include/linux/gfp.h:254:17: error: cannot size expression
    
    which is a line in gfp_zone():
    
            BUILD_BUG_ON((GFP_ZONE_BAD >> bit) & 1);
    
    That's really unfortunate, because it ends up hiding all of the other
    legitimate sparse messages like this:
            mm/page_alloc.c:5315:59: warning: incorrect type in argument 1 (different base types)
            mm/page_alloc.c:5315:59:    expected unsigned long [unsigned] [usertype] size
            mm/page_alloc.c:5315:59:    got restricted gfp_t [usertype] <noident>
    ...
    
    Having sparse be able to catch these very oopsable bugs is a lot more
    important than keeping a BUILD_BUG_ON().  Kill the BUILD_BUG_ON().
    
    Compiles on x86_64 with and without CONFIG_DEBUG_VM=y.  defconfig boots
    fine for me.
    Signed-off-by: default avatarDave Hansen <dave@linux.vnet.ibm.com>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    15fa8f42
gfp.h 13.1 KB