On Thu, Jul 26, 2018 at 04:07:51PM +0800, Wei Wang wrote: > 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.
I think this is intentional behavour. Previous version did return ~0UL explicitly in this case. See patch 89c1e79eb3023 (linux/bitmap.h: improve BITMAP_{LAST,FIRST}_WORD_MASK) from Rasmus. Introducing conditional branch would affect performance. All existing code checks nbits for 0 before handling last word where needed explicitly. So I think we'd better change nothing here. Yury > 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