Messages in this thread | | | From | Andy Shevchenko <> | Date | Thu, 26 Jul 2018 11:48:59 +0300 | Subject | Re: [PATCH] linux/bitmap.h: fix BITMAP_LAST_WORD_MASK |
| |
On Thu, Jul 26, 2018 at 11:07 AM, Wei Wang <wei.w.wang@intel.com> 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. >
Can you provide a practical example of what's going wrong before this patch applied?
> Signed-off-by: Wei Wang <wei.w.wang@intel.com> > Cc: Andrew Morton <akpm@linux-foundation.org> > Cc: Rasmus Villemoes <linux@rasmusvillemoes.dk> > Cc: Yury Norov <ynorov@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 >
-- With Best Regards, Andy Shevchenko
| |