checkpatch: whinge about bool bitfields
authorJoe Perches <joe@perches.com>
Tue, 10 Apr 2018 23:34:25 +0000 (16:34 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Wed, 11 Apr 2018 17:28:36 +0000 (10:28 -0700)
Using bool in a bitfield isn't a good idea as the alignment behavior is
arch implementation defined.

Suggest using unsigned int or u<8|16|32> instead.

Link: http://lkml.kernel.org/r/e22fb871b1b7f2fda4b22f3a24e0d7f092eb612c.camel@perches.com
Signed-off-by: Joe Perches <joe@perches.com>
Suggested-by: Peter Zijlstra <peterz@infradead.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
scripts/checkpatch.pl

index eb534d48140e2384bb61278f6a7e7f907f2b1d02..e16d6713f2368473d96eaec321fda1685cb3cac5 100755 (executable)
@@ -6251,6 +6251,12 @@ sub process {
                        }
                }
 
+# check for bool bitfields
+               if ($sline =~ /^.\s+bool\s*$Ident\s*:\s*\d+\s*;/) {
+                       WARN("BOOL_BITFIELD",
+                            "Avoid using bool as bitfield.  Prefer bool bitfields as unsigned int or u<8|16|32>\n" . $herecurr);
+               }
+
 # check for semaphores initialized locked
                if ($line =~ /^.\s*sema_init.+,\W?0\W?\)/) {
                        WARN("CONSIDER_COMPLETION",