Thread (9 messages) 9 messages, 6 authors, 2020-06-19

Re: [PATCH v8 4/4] gpio: xilinx: Utilize for_each_set_clump macro

From: Syed Nayyar Waris <hidden>
Date: 2020-06-16 05:57:32
Also in: linux-gpio, lkml

On Tue, Jun 16, 2020 at 1:39 AM kernel test robot [off-list ref] 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 <redacted>


sparse warnings: (new ones prefixed by >>)
quoted
quoted
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
quoted
quoted
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

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help