In expression 0xff << offset, left shifting by more than 31 bits has undefined behavior. Notice that the shift amount, *offset*, can be as much as 63.
Fix this by adding suffix ULL to integer 0xFF. Addresses-Coverity: 1487071 ("Bad bit shift operation") Fixes: d33f5cbaadd8 ("bitops: introduce the for_each_set_clump8 macro") Signed-off-by: Gustavo A. R. Silva <gust...@embeddedor.com> --- include/linux/bitmap.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/linux/bitmap.h b/include/linux/bitmap.h index 942871bfe47e..96f91db25b06 100644 --- a/include/linux/bitmap.h +++ b/include/linux/bitmap.h @@ -520,7 +520,7 @@ static inline void bitmap_set_value8(unsigned long *map, unsigned long value, const size_t index = BIT_WORD(start); const unsigned long offset = start % BITS_PER_LONG; - map[index] &= ~(0xFF << offset); + map[index] &= ~(0xFFULL << offset); map[index] |= value << offset; } -- 2.23.0