On Tue, Jun 16, 2020 at 1:39 AM kernel test robot <l...@intel.com> wrote:
>
> Hi Syed,
>
> Thank you for the patch! Perhaps something to improve:
>
> [auto build test WARNING on 444fc5cde64330661bf59944c43844e7d4c2ccd8]
>
> url:    
> https://github.com/0day-ci/linux/commits/Syed-Nayyar-Waris/Introduce-the-for_each_set_clump-macro/20200615-205729
> base:    444fc5cde64330661bf59944c43844e7d4c2ccd8
> config: sparc64-randconfig-s032-20200615 (attached as .config)
> compiler: sparc64-linux-gcc (GCC) 9.3.0
> reproduce:
>         # apt-get install sparse
>         # sparse version: v0.6.2-rc1-3-g55607964-dirty
>         # save the attached .config to linux build tree
>         make W=1 C=1 ARCH=sparc64 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__'
>
> If you fix the issue, kindly add following tag as appropriate
> Reported-by: kernel test robot <l...@intel.com>
>
>
> sparse warnings: (new ones prefixed by >>)
>
> >> include/linux/bitmap.h:639:45: sparse: sparse: shift too big (64) for type 
> >> unsigned long
> >> include/linux/bitmap.h:639:45: sparse: sparse: shift too big (64) for type 
> >> unsigned long
>    include/linux/bitmap.h:594:63: sparse: sparse: shift too big (64) for type 
> unsigned long
> >> include/linux/bitmap.h:639:45: sparse: sparse: shift too big (64) for type 
> >> unsigned long
> >> include/linux/bitmap.h:638:17: sparse: sparse: invalid access past the end 
> >> of 'old' (8 8)
>
> vim +639 include/linux/bitmap.h
>
> 169c474fb22d8a William Breathitt Gray 2019-12-04  613
> 803024b6c8a375 Syed Nayyar Waris      2020-06-15  614  /**
> 803024b6c8a375 Syed Nayyar Waris      2020-06-15  615   * bitmap_set_value - 
> set n-bit value within a memory region
> 803024b6c8a375 Syed Nayyar Waris      2020-06-15  616   * @map: address to 
> the bitmap memory region
> 803024b6c8a375 Syed Nayyar Waris      2020-06-15  617   * @value: value of 
> nbits
> 803024b6c8a375 Syed Nayyar Waris      2020-06-15  618   * @start: bit offset 
> of the n-bit value
> 803024b6c8a375 Syed Nayyar Waris      2020-06-15  619   * @nbits: size of 
> value in bits
> 803024b6c8a375 Syed Nayyar Waris      2020-06-15  620   */
> 803024b6c8a375 Syed Nayyar Waris      2020-06-15  621  static inline void 
> bitmap_set_value(unsigned long *map,
> 803024b6c8a375 Syed Nayyar Waris      2020-06-15  622                         
>       unsigned long value,
> 803024b6c8a375 Syed Nayyar Waris      2020-06-15  623                         
>       unsigned long start, unsigned long nbits)
> 803024b6c8a375 Syed Nayyar Waris      2020-06-15  624  {
> 803024b6c8a375 Syed Nayyar Waris      2020-06-15  625   const size_t index = 
> BIT_WORD(start);
> 803024b6c8a375 Syed Nayyar Waris      2020-06-15  626   const unsigned long 
> offset = start % BITS_PER_LONG;
> 803024b6c8a375 Syed Nayyar Waris      2020-06-15  627   const unsigned long 
> ceiling = roundup(start + 1, BITS_PER_LONG);
> 803024b6c8a375 Syed Nayyar Waris      2020-06-15  628   const unsigned long 
> space = ceiling - start;
> 803024b6c8a375 Syed Nayyar Waris      2020-06-15  629
> 803024b6c8a375 Syed Nayyar Waris      2020-06-15  630   value &= 
> GENMASK(nbits - 1, 0);
> 803024b6c8a375 Syed Nayyar Waris      2020-06-15  631
> 803024b6c8a375 Syed Nayyar Waris      2020-06-15  632   if (space >= nbits) {
> 803024b6c8a375 Syed Nayyar Waris      2020-06-15  633           map[index] &= 
> ~(GENMASK(nbits + offset - 1, offset));
> 803024b6c8a375 Syed Nayyar Waris      2020-06-15  634           map[index] |= 
> value << offset;
> 803024b6c8a375 Syed Nayyar Waris      2020-06-15  635   } else {
> 803024b6c8a375 Syed Nayyar Waris      2020-06-15  636           map[index] &= 
> ~BITMAP_FIRST_WORD_MASK(start);
> 803024b6c8a375 Syed Nayyar Waris      2020-06-15  637           map[index] |= 
> value << offset;
> 803024b6c8a375 Syed Nayyar Waris      2020-06-15 @638           map[index + 
> 1] &= ~BITMAP_LAST_WORD_MASK(start + nbits);
> 803024b6c8a375 Syed Nayyar Waris      2020-06-15 @639           map[index + 
> 1] |= (value >> space);
> 803024b6c8a375 Syed Nayyar Waris      2020-06-15  640   }
> 803024b6c8a375 Syed Nayyar Waris      2020-06-15  641  }
> 803024b6c8a375 Syed Nayyar Waris      2020-06-15  642


Regarding the compilation warning reported above:

"sparse: shift too big (64) for type unsigned long" at line 639
"sparse: invalid access past the end of 'old' (8 8)" at line 638

Kindly refer to the code above, at these line numbers.

I am in the process of fixing this warning. But what would be the fix
? At the moment can't think of a code-fix to make the compilation
warning disappear (specially at line 639). Can anyone please explain
to me the meaning of the compilation warning more deeply?

By the way, this warning was not reported in (earlier) v7 of the patchset.

Regards
Syed Nayyar Waris

Reply via email to