Skip to content

Commit e36488c

Browse files
arndbtorvalds
authored andcommitted
bitfield: avoid gcc-8 -Wint-in-bool-context warning
Passing an enum into FIELD_GET() produces a long but harmless warning on newer compilers: from include/linux/linkage.h:7, from include/linux/kernel.h:7, from include/linux/skbuff.h:17, from include/linux/if_ether.h:23, from include/linux/etherdevice.h:25, from drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c:63: drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c: In function 'iwl_mvm_rx_mpdu_mq': include/linux/bitfield.h:56:20: error: enum constant in boolean context [-Werror=int-in-bool-context] BUILD_BUG_ON_MSG(!(_mask), _pfx "mask is zero"); \ ^ ... include/linux/bitfield.h:103:3: note: in expansion of macro '__BF_FIELD_CHECK' __BF_FIELD_CHECK(_mask, _reg, 0U, "FIELD_GET: "); \ ^~~~~~~~~~~~~~~~ drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c:1025:21: note: in expansion of macro 'FIELD_GET' le16_encode_bits(FIELD_GET(IWL_RX_HE_PHY_SIBG_SYM_OR_USER_NUM_MASK, The problem here is that the caller has no idea how the macro gets expanding, leading to a false-positive. It can be trivially avoided by doing a comparison against zero. This only recently started appearing as the iwlwifi driver was patched to use FIELD_GET. Link: http://lkml.kernel.org/r/[email protected] Fixes: 514c306 ("iwlwifi: add support for IEEE802.11ax") Signed-off-by: Arnd Bergmann <[email protected]> Cc: Masahiro Yamada <[email protected]> Cc: Johannes Berg <[email protected]> Cc: Jakub Kicinski <[email protected]> Cc: Andy Shevchenko <[email protected]> Cc: Al Viro <[email protected]> Cc: David Laight <[email protected]> Signed-off-by: Andrew Morton <[email protected]> Signed-off-by: Linus Torvalds <[email protected]>
1 parent 6ed191c commit e36488c

File tree

1 file changed

+1
-1
lines changed

1 file changed

+1
-1
lines changed

include/linux/bitfield.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@
5353
({ \
5454
BUILD_BUG_ON_MSG(!__builtin_constant_p(_mask), \
5555
_pfx "mask is not constant"); \
56-
BUILD_BUG_ON_MSG(!(_mask), _pfx "mask is zero"); \
56+
BUILD_BUG_ON_MSG((_mask) == 0, _pfx "mask is zero"); \
5757
BUILD_BUG_ON_MSG(__builtin_constant_p(_val) ? \
5858
~((_mask) >> __bf_shf(_mask)) & (_val) : 0, \
5959
_pfx "value too large for the field"); \

0 commit comments

Comments
 (0)