* drivers/crypto/amlogic/amlogic-gxl-cipher.c:171:19: sparse: sparse: incorrect type in assignment (different base types)
@ 2022-04-01 2:55 kernel test robot
0 siblings, 0 replies; only message in thread
From: kernel test robot @ 2022-04-01 2:55 UTC (permalink / raw)
To: Corentin Labbe; +Cc: kbuild-all, linux-kernel, Herbert Xu
tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: e8b767f5e04097aaedcd6e06e2270f9fe5282696
commit: 3d04158814e7a808c38124c87502b430b916dfcb crypto: amlogic - enable working on big endian kernel
date: 2 years, 4 months ago
config: sh-randconfig-s031-20220328 (https://download.01.org/0day-ci/archive/20220401/202204011037.4f7vvM8S-lkp@intel.com/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/torvalds/linux.git/commit/?id=3d04158814e7a808c38124c87502b430b916dfcb
git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
git fetch --no-tags linus master
git checkout 3d04158814e7a808c38124c87502b430b916dfcb
# 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@intel.com>
sparse warnings: (new ones prefixed by >>)
>> drivers/crypto/amlogic/amlogic-gxl-cipher.c:171:19: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 [usertype] v @@ got unsigned long @@
drivers/crypto/amlogic/amlogic-gxl-cipher.c:171:19: sparse: expected restricted __le32 [usertype] v
drivers/crypto/amlogic/amlogic-gxl-cipher.c:171:19: sparse: got unsigned long
>> drivers/crypto/amlogic/amlogic-gxl-cipher.c:172:34: sparse: sparse: cast from restricted __le32
>> drivers/crypto/amlogic/amlogic-gxl-cipher.c:172:34: sparse: sparse: incorrect type in argument 1 (different base types) @@ expected unsigned int [usertype] val @@ got restricted __le32 [usertype] v @@
drivers/crypto/amlogic/amlogic-gxl-cipher.c:172:34: sparse: expected unsigned int [usertype] val
drivers/crypto/amlogic/amlogic-gxl-cipher.c:172:34: sparse: got restricted __le32 [usertype] v
>> drivers/crypto/amlogic/amlogic-gxl-cipher.c:172:34: sparse: sparse: cast from restricted __le32
>> drivers/crypto/amlogic/amlogic-gxl-cipher.c:172:34: sparse: sparse: cast from restricted __le32
>> drivers/crypto/amlogic/amlogic-gxl-cipher.c:172:34: sparse: sparse: cast from restricted __le32
>> drivers/crypto/amlogic/amlogic-gxl-cipher.c:172:34: sparse: sparse: cast from restricted __le32
drivers/crypto/amlogic/amlogic-gxl-cipher.c:215:19: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 [usertype] v @@ got unsigned long @@
drivers/crypto/amlogic/amlogic-gxl-cipher.c:215:19: sparse: expected restricted __le32 [usertype] v
drivers/crypto/amlogic/amlogic-gxl-cipher.c:215:19: sparse: got unsigned long
>> drivers/crypto/amlogic/amlogic-gxl-cipher.c:217:27: sparse: sparse: invalid assignment: |=
>> drivers/crypto/amlogic/amlogic-gxl-cipher.c:217:27: sparse: left side has type restricted __le32
>> drivers/crypto/amlogic/amlogic-gxl-cipher.c:217:27: sparse: right side has type unsigned long
drivers/crypto/amlogic/amlogic-gxl-cipher.c:221:27: sparse: sparse: invalid assignment: |=
drivers/crypto/amlogic/amlogic-gxl-cipher.c:221:27: sparse: left side has type restricted __le32
drivers/crypto/amlogic/amlogic-gxl-cipher.c:221:27: sparse: right side has type unsigned long
drivers/crypto/amlogic/amlogic-gxl-cipher.c:222:34: sparse: sparse: cast from restricted __le32
drivers/crypto/amlogic/amlogic-gxl-cipher.c:222:34: sparse: sparse: incorrect type in argument 1 (different base types) @@ expected unsigned int [usertype] val @@ got restricted __le32 [usertype] v @@
drivers/crypto/amlogic/amlogic-gxl-cipher.c:222:34: sparse: expected unsigned int [usertype] val
drivers/crypto/amlogic/amlogic-gxl-cipher.c:222:34: sparse: got restricted __le32 [usertype] v
drivers/crypto/amlogic/amlogic-gxl-cipher.c:222:34: sparse: sparse: cast from restricted __le32
drivers/crypto/amlogic/amlogic-gxl-cipher.c:222:34: sparse: sparse: cast from restricted __le32
drivers/crypto/amlogic/amlogic-gxl-cipher.c:222:34: sparse: sparse: cast from restricted __le32
drivers/crypto/amlogic/amlogic-gxl-cipher.c:222:34: sparse: sparse: cast from restricted __le32
vim +171 drivers/crypto/amlogic/amlogic-gxl-cipher.c
118
119 /*
120 * The hardware expect a list of meson_desc structures.
121 * The 2 first structures store key
122 * The third stores IV
123 */
124 bkeyiv = kzalloc(48, GFP_KERNEL | GFP_DMA);
125 if (!bkeyiv)
126 return -ENOMEM;
127
128 memcpy(bkeyiv, op->key, op->keylen);
129 keyivlen = op->keylen;
130
131 ivsize = crypto_skcipher_ivsize(tfm);
132 if (areq->iv && ivsize > 0) {
133 if (ivsize > areq->cryptlen) {
134 dev_err(mc->dev, "invalid ivsize=%d vs len=%d\n", ivsize, areq->cryptlen);
135 err = -EINVAL;
136 goto theend;
137 }
138 memcpy(bkeyiv + 32, areq->iv, ivsize);
139 keyivlen = 48;
140 if (rctx->op_dir == MESON_DECRYPT) {
141 backup_iv = kzalloc(ivsize, GFP_KERNEL);
142 if (!backup_iv) {
143 err = -ENOMEM;
144 goto theend;
145 }
146 offset = areq->cryptlen - ivsize;
147 scatterwalk_map_and_copy(backup_iv, areq->src, offset,
148 ivsize, 0);
149 }
150 }
151 if (keyivlen == 24)
152 keyivlen = 32;
153
154 phykeyiv = dma_map_single(mc->dev, bkeyiv, keyivlen,
155 DMA_TO_DEVICE);
156 err = dma_mapping_error(mc->dev, phykeyiv);
157 if (err) {
158 dev_err(mc->dev, "Cannot DMA MAP KEY IV\n");
159 goto theend;
160 }
161
162 tloffset = 0;
163 eat = 0;
164 i = 0;
165 while (keyivlen > eat) {
166 desc = &mc->chanlist[flow].tl[tloffset];
167 memset(desc, 0, sizeof(struct meson_desc));
168 todo = min(keyivlen - eat, 16u);
169 desc->t_src = cpu_to_le32(phykeyiv + i * 16);
170 desc->t_dst = cpu_to_le32(i * 16);
> 171 v = (MODE_KEY << 20) | DESC_OWN | 16;
> 172 desc->t_status = cpu_to_le32(v);
173
174 eat += todo;
175 i++;
176 tloffset++;
177 }
178
179 if (areq->src == areq->dst) {
180 nr_sgs = dma_map_sg(mc->dev, areq->src, sg_nents(areq->src),
181 DMA_BIDIRECTIONAL);
182 if (nr_sgs < 0) {
183 dev_err(mc->dev, "Invalid SG count %d\n", nr_sgs);
184 err = -EINVAL;
185 goto theend;
186 }
187 nr_sgd = nr_sgs;
188 } else {
189 nr_sgs = dma_map_sg(mc->dev, areq->src, sg_nents(areq->src),
190 DMA_TO_DEVICE);
191 if (nr_sgs < 0 || nr_sgs > MAXDESC - 3) {
192 dev_err(mc->dev, "Invalid SG count %d\n", nr_sgs);
193 err = -EINVAL;
194 goto theend;
195 }
196 nr_sgd = dma_map_sg(mc->dev, areq->dst, sg_nents(areq->dst),
197 DMA_FROM_DEVICE);
198 if (nr_sgd < 0 || nr_sgd > MAXDESC - 3) {
199 dev_err(mc->dev, "Invalid SG count %d\n", nr_sgd);
200 err = -EINVAL;
201 goto theend;
202 }
203 }
204
205 src_sg = areq->src;
206 dst_sg = areq->dst;
207 len = areq->cryptlen;
208 while (src_sg) {
209 desc = &mc->chanlist[flow].tl[tloffset];
210 memset(desc, 0, sizeof(struct meson_desc));
211
212 desc->t_src = cpu_to_le32(sg_dma_address(src_sg));
213 desc->t_dst = cpu_to_le32(sg_dma_address(dst_sg));
214 todo = min(len, sg_dma_len(src_sg));
215 v = (op->keymode << 20) | DESC_OWN | todo | (algt->blockmode << 26);
216 if (rctx->op_dir)
> 217 v |= DESC_ENCRYPTION;
218 len -= todo;
219
220 if (!sg_next(src_sg))
221 v |= DESC_LAST;
222 desc->t_status = cpu_to_le32(v);
223 tloffset++;
224 src_sg = sg_next(src_sg);
225 dst_sg = sg_next(dst_sg);
226 }
227
228 reinit_completion(&mc->chanlist[flow].complete);
229 mc->chanlist[flow].status = 0;
230 writel(mc->chanlist[flow].t_phy | 2, mc->base + (flow << 2));
231 wait_for_completion_interruptible_timeout(&mc->chanlist[flow].complete,
232 msecs_to_jiffies(500));
233 if (mc->chanlist[flow].status == 0) {
234 dev_err(mc->dev, "DMA timeout for flow %d\n", flow);
235 err = -EINVAL;
236 }
237
238 dma_unmap_single(mc->dev, phykeyiv, keyivlen, DMA_TO_DEVICE);
239
240 if (areq->src == areq->dst) {
241 dma_unmap_sg(mc->dev, areq->src, nr_sgs, DMA_BIDIRECTIONAL);
242 } else {
243 dma_unmap_sg(mc->dev, areq->src, nr_sgs, DMA_TO_DEVICE);
244 dma_unmap_sg(mc->dev, areq->dst, nr_sgd, DMA_FROM_DEVICE);
245 }
246
247 if (areq->iv && ivsize > 0) {
248 if (rctx->op_dir == MESON_DECRYPT) {
249 memcpy(areq->iv, backup_iv, ivsize);
250 } else {
251 scatterwalk_map_and_copy(areq->iv, areq->dst,
252 areq->cryptlen - ivsize,
253 ivsize, 0);
254 }
255 }
256 theend:
257 kzfree(bkeyiv);
258 kzfree(backup_iv);
259
260 return err;
261 }
262
--
0-DAY CI Kernel Test Service
https://01.org/lkp
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2022-04-01 2:56 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-04-01 2:55 drivers/crypto/amlogic/amlogic-gxl-cipher.c:171:19: sparse: sparse: incorrect type in assignment (different base types) kernel test robot
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.