]> git.baikalelectronics.ru Git - kernel.git/commit
Fix WARN_ON() on bitfield ops
authorLinus Torvalds <torvalds@woody.linux-foundation.org>
Wed, 1 Aug 2007 04:12:07 +0000 (21:12 -0700)
committerLinus Torvalds <torvalds@woody.linux-foundation.org>
Wed, 1 Aug 2007 04:12:07 +0000 (21:12 -0700)
commitc952e9f1dbf298ffde2fc4b5896a01b26597b4bf
treef4fe8e2028620b8aeb298c78ee5dc9d6df07e708
parent1efd7ac1f9c24863902c771322552d6b35f496c4
Fix WARN_ON() on bitfield ops

Alexey Dobriyan noticed that the new WARN_ON() semantics that were
introduced by commit 6aee29199618b43cb2da2ea3a51dc78a9b7833bf (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: Linus Torvalds <torvalds@osdl.org>
include/asm-generic/bug.h
include/asm-powerpc/bug.h