[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <CACG_h5oiA8mDpTjtyGFYR4eptbxppN9tq+2wUj8T1hsbZ5h47A@mail.gmail.com>
Date: Tue, 16 Jun 2020 11:27:18 +0530
From: Syed Nayyar Waris <syednwaris@...il.com>
To: kernel test robot <lkp@...el.com>
Cc: Linus Walleij <linus.walleij@...aro.org>,
Andrew Morton <akpm@...ux-foundation.org>,
kbuild-all@...ts.01.org,
Andy Shevchenko <andriy.shevchenko@...ux.intel.com>,
William Breathitt Gray <vilhelm.gray@...il.com>,
Bartosz Golaszewski <bgolaszewski@...libre.com>,
Michal Simek <michal.simek@...inx.com>,
"open list:GPIO SUBSYSTEM" <linux-gpio@...r.kernel.org>,
linux-arm Mailing List <linux-arm-kernel@...ts.infradead.org>,
Linux Kernel Mailing List <linux-kernel@...r.kernel.org>
Subject: Re: [PATCH v8 4/4] gpio: xilinx: Utilize for_each_set_clump macro
On Tue, Jun 16, 2020 at 1:39 AM kernel test robot <lkp@...el.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 <lkp@...el.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
Powered by blists - more mailing lists