arch/riscv/kernel/module.c:33:25: sparse: sparse: cast to restricted __le16

From: kernel test robot
Date: Wed Nov 15 2023 - 18:01:41 EST


tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: c42d9eeef8e5ba9292eda36fd8e3c11f35ee065c
commit: 8cbe0accc4a6ba7ed34812a1c7e1ba67e7f7b2a4 riscv: Avoid unaligned access when relocating modules
date: 8 days ago
config: riscv-randconfig-r133-20231115 (https://download.01.org/0day-ci/archive/20231116/202311160648.Adh0V2Wd-lkp@xxxxxxxxx/config)
compiler: riscv64-linux-gcc (GCC) 13.2.0
reproduce: (https://download.01.org/0day-ci/archive/20231116/202311160648.Adh0V2Wd-lkp@xxxxxxxxx/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 <lkp@xxxxxxxxx>
| Closes: https://lore.kernel.org/oe-kbuild-all/202311160648.Adh0V2Wd-lkp@xxxxxxxxx/

sparse warnings: (new ones prefixed by >>)
WARNING: invalid argument to '-march': '_zihintpause'
>> arch/riscv/kernel/module.c:33:25: sparse: sparse: cast to restricted __le16
arch/riscv/kernel/module.c:33:55: sparse: sparse: cast to restricted __le16
>> arch/riscv/kernel/module.c:38:19: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned short [usertype] @@ got restricted __le16 [usertype] @@
arch/riscv/kernel/module.c:38:19: sparse: expected unsigned short [usertype]
arch/riscv/kernel/module.c:38:19: sparse: got restricted __le16 [usertype]
arch/riscv/kernel/module.c:39:19: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned short [usertype] @@ got restricted __le16 [usertype] @@
arch/riscv/kernel/module.c:39:19: sparse: expected unsigned short [usertype]
arch/riscv/kernel/module.c:39:19: sparse: got restricted __le16 [usertype]
arch/riscv/kernel/module.c:46:20: sparse: sparse: cast to restricted __le16
arch/riscv/kernel/module.c:51:17: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned short [usertype] @@ got restricted __le16 [usertype] @@
arch/riscv/kernel/module.c:51:17: sparse: expected unsigned short [usertype]
arch/riscv/kernel/module.c:51:17: sparse: got restricted __le16 [usertype]

vim +33 arch/riscv/kernel/module.c

29
30 static int riscv_insn_rmw(void *location, u32 keep, u32 set)
31 {
32 u16 *parcel = location;
> 33 u32 insn = (u32)le16_to_cpu(parcel[0]) | (u32)le16_to_cpu(parcel[1]) << 16;
34
35 insn &= keep;
36 insn |= set;
37
> 38 parcel[0] = cpu_to_le16(insn);
39 parcel[1] = cpu_to_le16(insn >> 16);
40 return 0;
41 }
42

--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki