The existing BITMAP_LAST_WORD_MASK macro returns 0xffffffff if nbits is 0. This patch changes the macro to return 0 when there is no bit needs to be masked.
Signed-off-by: Wei Wang <wei.w.w...@intel.com> Cc: Andrew Morton <a...@linux-foundation.org> Cc: Rasmus Villemoes <li...@rasmusvillemoes.dk> Cc: Yury Norov <yno...@caviumnetworks.com> --- include/linux/bitmap.h | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/include/linux/bitmap.h b/include/linux/bitmap.h index 1ee46f4..12af3d7 100644 --- a/include/linux/bitmap.h +++ b/include/linux/bitmap.h @@ -194,7 +194,10 @@ extern int bitmap_print_to_pagebuf(bool list, char *buf, const unsigned long *maskp, int nmaskbits); #define BITMAP_FIRST_WORD_MASK(start) (~0UL << ((start) & (BITS_PER_LONG - 1))) -#define BITMAP_LAST_WORD_MASK(nbits) (~0UL >> (-(nbits) & (BITS_PER_LONG - 1))) +#define BITMAP_LAST_WORD_MASK(nbits) \ +( \ + nbits ? (~0UL >> (-(nbits) & (BITS_PER_LONG - 1))) : 0 \ +) #define small_const_nbits(nbits) \ (__builtin_constant_p(nbits) && (nbits) <= BITS_PER_LONG) -- 2.7.4