• Linus Torvalds's avatar
    Fix WARN_ON() on bitfield ops · 8d4fbcfb
    Linus Torvalds authored
    Alexey Dobriyan noticed that the new WARN_ON() semantics that were
    introduced by commit 684f9783 (to also
    return the value to be warned on) didn't compile when given a bitfield,
    because the typeof doesn't work for bitfields.
    
    So instead of the typeof trick, use an "int" variable together with a
    "!!(x)" expression, as suggested by Al Viro.
    
    To make matters more interesting, Paul Mackerras points out that that is
    sub-optimal on Power, but the old asm-coded comparison seems to be buggy
    anyway on 32-bit Power if the conditional was 64-bit, so I think there
    are more problems there.
    
    Regardless, the new WARN_ON() semantics may have been a bad idea.  But
    this at least avoids the more serious complications.
    
    Cc: Alexey Dobriyan <adobriyan@sw.ru>
    Cc: Herbert Xu <herbert@gondor.apana.org.au>
    Cc: Paul Mackerras <paulus@samba.org>
    Cc: Al Viro <viro@ftp.linux.org.uk>
    Cc: Ingo Molnar <mingo@elte.hu>
    Cc: Andrew Morton <akpm@osdl.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
    8d4fbcfb
bug.h 2.95 KB