[jarkko-tpmdd:master 27/27] drivers/char/tpm/tpm_tis_synquacer.c:89:32: sparse: sparse: incorrect type in argument 1 (different base types)

From: kernel test robot
Date: Wed Mar 23 2022 - 06:25:34 EST


tree: git://git.kernel.org/pub/scm/linux/kernel/git/jarkko/linux-tpmdd.git master
head: a536629ef32d127d26f3886f1fd480708fd5ac20
commit: a536629ef32d127d26f3886f1fd480708fd5ac20 [27/27] tpm: Remove read16/read32/write32 calls from tpm_tis_phy_ops
config: sh-randconfig-s031-20220323 (https://download.01.org/0day-ci/archive/20220323/202203231801.VgCJzhRC-lkp@xxxxxxxxx/config)
compiler: sh4-linux-gcc (GCC) 11.2.0
reproduce:
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# apt-get install sparse
# sparse version: v0.6.4-dirty
# https://git.kernel.org/pub/scm/linux/kernel/git/jarkko/linux-tpmdd.git/commit/?id=a536629ef32d127d26f3886f1fd480708fd5ac20
git remote add jarkko-tpmdd git://git.kernel.org/pub/scm/linux/kernel/git/jarkko/linux-tpmdd.git
git fetch --no-tags jarkko-tpmdd master
git checkout a536629ef32d127d26f3886f1fd480708fd5ac20
# save the config file to linux build tree
mkdir build_dir
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-11.2.0 make.cross C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' O=build_dir ARCH=sh SHELL=/bin/bash

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@xxxxxxxxx>


sparse warnings: (new ones prefixed by >>)
>> drivers/char/tpm/tpm_tis_synquacer.c:89:32: sparse: sparse: incorrect type in argument 1 (different base types) @@ expected unsigned char [usertype] @@ got unsigned char const [usertype] * @@
drivers/char/tpm/tpm_tis_synquacer.c:89:32: sparse: expected unsigned char [usertype]
drivers/char/tpm/tpm_tis_synquacer.c:89:32: sparse: got unsigned char const [usertype] *
drivers/char/tpm/tpm_tis_synquacer.c:90:32: sparse: sparse: incorrect type in argument 1 (different base types) @@ expected unsigned char [usertype] @@ got unsigned char const [usertype] * @@
drivers/char/tpm/tpm_tis_synquacer.c:90:32: sparse: expected unsigned char [usertype]
drivers/char/tpm/tpm_tis_synquacer.c:90:32: sparse: got unsigned char const [usertype] *
drivers/char/tpm/tpm_tis_synquacer.c:91:32: sparse: sparse: incorrect type in argument 1 (different base types) @@ expected unsigned char [usertype] @@ got unsigned char const [usertype] * @@
drivers/char/tpm/tpm_tis_synquacer.c:91:32: sparse: expected unsigned char [usertype]
drivers/char/tpm/tpm_tis_synquacer.c:91:32: sparse: got unsigned char const [usertype] *
drivers/char/tpm/tpm_tis_synquacer.c:92:32: sparse: sparse: incorrect type in argument 1 (different base types) @@ expected unsigned char [usertype] @@ got unsigned char const [usertype] * @@
drivers/char/tpm/tpm_tis_synquacer.c:92:32: sparse: expected unsigned char [usertype]
drivers/char/tpm/tpm_tis_synquacer.c:92:32: sparse: got unsigned char const [usertype] *
drivers/char/tpm/tpm_tis_synquacer.c:89:33: sparse: sparse: non size-preserving pointer to integer cast
drivers/char/tpm/tpm_tis_synquacer.c:90:33: sparse: sparse: non size-preserving pointer to integer cast
drivers/char/tpm/tpm_tis_synquacer.c:91:33: sparse: sparse: non size-preserving pointer to integer cast
drivers/char/tpm/tpm_tis_synquacer.c:92:33: sparse: sparse: non size-preserving pointer to integer cast

vim +89 drivers/char/tpm/tpm_tis_synquacer.c

66
67 static int tpm_tis_synquacer_write_bytes(struct tpm_tis_data *data, u32 addr,
68 u16 len, const u8 *value,
69 enum tpm_tis_io_mode io_mode)
70 {
71 struct tpm_tis_synquacer_phy *phy = to_tpm_tis_tcg_phy(data);
72 __le16 result_le16;
73 __le32 result_le32;
74 u16 result16;
75 u32 result32;
76
77 switch (io_mode) {
78 case TPM_TIS_PHYS_8:
79 while (len--)
80 iowrite8(*value++, phy->iobase + addr);
81 break;
82 case TPM_TIS_PHYS_16:
83 return -EINVAL;
84 case TPM_TIS_PHYS_32:
85 /*
86 * Due to the limitation of SPI controller on SynQuacer,
87 * 16/32 bits access must be done in byte-wise and descending order.
88 */
> 89 iowrite8(&value[3], phy->iobase + addr + 3);
90 iowrite8(&value[2], phy->iobase + addr + 2);
91 iowrite8(&value[1], phy->iobase + addr + 1);
92 iowrite8(&value[0], phy->iobase + addr);
93 break;
94 }
95
96 return 0;
97 }
98

--
0-DAY CI Kernel Test Service
https://01.org/lkp