bitops: avoid integer overflow in GENMASK(_ULL)
authorMatthias Kaehlcke <mka@chromium.org>
Fri, 8 Sep 2017 23:14:33 +0000 (16:14 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Sat, 9 Sep 2017 01:26:48 +0000 (18:26 -0700)
commitc32ee3d9abd284b4fcaacc250b101f93829c7bae
tree14da37d4c3debe116e378f3de20099babf0de1c3
parente9ef073a0796e46c24f037237291efe56fc28ad9
bitops: avoid integer overflow in GENMASK(_ULL)

GENMASK(_ULL) performs a left-shift of ~0UL(L), which technically
results in an integer overflow.  clang raises a warning if the overflow
occurs in a preprocessor expression.  Clear the low-order bits through a
substraction instead of the left-shift to avoid the overflow.

(akpm: no change in .text size in my testing)

Link: http://lkml.kernel.org/r/20170803212020.24939-1-mka@chromium.org
Signed-off-by: Matthias Kaehlcke <mka@chromium.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
include/linux/bitops.h