2023-09-15 20:46:43

by Chris Morgan

[permalink] [raw]
Subject: Re: include/asm-generic/unaligned.h:119:16: sparse: sparse: cast truncates bits from constant value (aa01a0 becomes a0)

On Tue, Sep 12, 2023 at 08:46:48AM +0800, kernel test robot wrote:
> tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
> head: 0bb80ecc33a8fb5a682236443c1e740d5c917d1d
> commit: 66603243f5283f7f28c795f09e7c2167233df0bd Input: add driver for Hynitron cstxxx touchscreens
> date: 11 months ago
> config: i386-randconfig-061-20230909 (https://download.01.org/0day-ci/archive/20230912/[email protected]/config)
> compiler: gcc-12 (Debian 12.2.0-14) 12.2.0
> reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20230912/[email protected]/reproduce)
>
> If you fix the issue in a separate patch/commit (i.e. not just a new version of
> the same patch/commit), kindly add following tags
> | Reported-by: kernel test robot <[email protected]>
> | Closes: https://lore.kernel.org/oe-kbuild-all/[email protected]/
>
> sparse warnings: (new ones prefixed by >>)
> drivers/input/touchscreen/hynitron_cstxxx.c: note: in included file (through arch/x86/include/generated/asm/unaligned.h):
> >> include/asm-generic/unaligned.h:119:16: sparse: sparse: cast truncates bits from constant value (aa01a0 becomes a0)
> >> include/asm-generic/unaligned.h:120:20: sparse: sparse: cast truncates bits from constant value (aa01 becomes 1)
> >> include/asm-generic/unaligned.h:119:16: sparse: sparse: cast truncates bits from constant value (ab00d0 becomes d0)
> >> include/asm-generic/unaligned.h:120:20: sparse: sparse: cast truncates bits from constant value (ab00 becomes 0)
>
> vim +119 include/asm-generic/unaligned.h
>
> 803f4e1eab7a89 Arnd Bergmann 2021-05-08 116
> 803f4e1eab7a89 Arnd Bergmann 2021-05-08 117 static inline void __put_unaligned_le24(const u32 val, u8 *p)
> 803f4e1eab7a89 Arnd Bergmann 2021-05-08 118 {
> 803f4e1eab7a89 Arnd Bergmann 2021-05-08 @119 *p++ = val;
> 803f4e1eab7a89 Arnd Bergmann 2021-05-08 @120 *p++ = val >> 8;
> 803f4e1eab7a89 Arnd Bergmann 2021-05-08 121 *p++ = val >> 16;
> 803f4e1eab7a89 Arnd Bergmann 2021-05-08 122 }
> 803f4e1eab7a89 Arnd Bergmann 2021-05-08 123
>
> :::::: The code at line 119 was first introduced by commit
> :::::: 803f4e1eab7a8938ba3a3c30dd4eb5e9eeef5e63 asm-generic: simplify asm/unaligned.h
>
> :::::: TO: Arnd Bergmann <[email protected]>
> :::::: CC: Arnd Bergmann <[email protected]>
>
> --
> 0-DAY CI Kernel Test Service
> https://github.com/intel/lkp-tests/wiki

I'm afraid I don't understand the error in question. When I call the
function put_unaligned_le24() I do see that this function then calls
__put_unaligned_le24() which takes part of the value and does cast
it as a u8. Is that what this error is about? Just trying to figure
out the best way to resolve it, sadly I'm not clearly seeing the issue
so I thought I'd ask.

Thank you.
Chris Morgan