tree: git://git.kernel.org/pub/scm/linux/kernel/git/herbert/cryptodev-2.6.git
master
head: 2df6bb5d8b22bc06a6ea83e8b2a6bcf3bb445304
commit: 7aeef693d18d359134f47bf7b6621ec303b570f9 [272/278] crypto: marvell/cesa
- add MD5 support
reproduce:
# apt-get install sparse
git checkout 7aeef693d18d359134f47bf7b6621ec303b570f9
make ARCH=x86_64 allmodconfig
make C=1 CF=-D__CHECK_ENDIAN__
sparse warnings: (new ones prefixed by >>)
drivers/crypto/marvell/hash.c:206:17: sparse: incorrect type in argument 1
(different address spaces)
drivers/crypto/marvell/hash.c:206:17: expected void *to
drivers/crypto/marvell/hash.c:206:17: got void [noderef] <asn:2>*
drivers/crypto/marvell/hash.c:220:77: sparse: incorrect type in argument 3
(different address spaces)
drivers/crypto/marvell/hash.c:220:77: expected void *buf
drivers/crypto/marvell/hash.c:220:77: got void [noderef] <asn:2>*
drivers/crypto/marvell/cesa.h:631:16: sparse: cast to restricted __le32
drivers/crypto/marvell/cesa.h:663:28: sparse: invalid assignment: |=
drivers/crypto/marvell/cesa.h:663:28: left side has type unsigned int
drivers/crypto/marvell/cesa.h:663:28: right side has type restricted
__le32
drivers/crypto/marvell/hash.c:248:33: sparse: incorrect type in argument 2
(different address spaces)
drivers/crypto/marvell/hash.c:248:33: expected void const *from
drivers/crypto/marvell/hash.c:248:33: got void [noderef] <asn:2>*
drivers/crypto/marvell/hash.c:254:68: sparse: incorrect type in argument 2
(different address spaces)
drivers/crypto/marvell/hash.c:254:68: expected unsigned char [usertype]
*buf
drivers/crypto/marvell/hash.c:254:68: got void [noderef] <asn:2>*
drivers/crypto/marvell/cesa.h:670:29: sparse: invalid assignment: |=
drivers/crypto/marvell/cesa.h:670:29: left side has type unsigned int
drivers/crypto/marvell/cesa.h:670:29: right side has type restricted
__le32
drivers/crypto/marvell/cesa.h:625:25: sparse: invalid assignment: &=
drivers/crypto/marvell/cesa.h:625:25: left side has type unsigned int
drivers/crypto/marvell/cesa.h:625:25: right side has type restricted
__le32
drivers/crypto/marvell/cesa.h:626:25: sparse: invalid assignment: |=
drivers/crypto/marvell/cesa.h:626:25: left side has type unsigned int
drivers/crypto/marvell/cesa.h:626:25: right side has type restricted
__le32
drivers/crypto/marvell/hash.c:269:9: sparse: incorrect type in argument 1
(different address spaces)
drivers/crypto/marvell/hash.c:269:9: expected void *to
drivers/crypto/marvell/hash.c:269:9: got void [noderef] <asn:2>*sram
drivers/crypto/marvell/cesa.h:625:25: sparse: invalid assignment: &=
drivers/crypto/marvell/cesa.h:625:25: left side has type unsigned int
drivers/crypto/marvell/cesa.h:625:25: right side has type restricted
__le32
drivers/crypto/marvell/cesa.h:626:25: sparse: invalid assignment: |=
drivers/crypto/marvell/cesa.h:626:25: left side has type unsigned int
drivers/crypto/marvell/cesa.h:626:25: right side has type restricted
__le32
drivers/crypto/marvell/cesa.h:644:24: sparse: incorrect type in assignment
(different base types)
drivers/crypto/marvell/cesa.h:644:24: expected unsigned int [unsigned]
[usertype] enc_p
drivers/crypto/marvell/cesa.h:644:24: got restricted __le32 [usertype]
<noident>
drivers/crypto/marvell/cesa.h:645:28: sparse: incorrect type in assignment
(different base types)
drivers/crypto/marvell/cesa.h:645:28: expected unsigned int [unsigned]
[usertype] enc_key_p
drivers/crypto/marvell/cesa.h:645:28: got restricted __le32 [usertype]
<noident>
drivers/crypto/marvell/cesa.h:646:25: sparse: incorrect type in assignment
(different base types)
drivers/crypto/marvell/cesa.h:646:25: expected unsigned int [unsigned]
[usertype] enc_iv
drivers/crypto/marvell/cesa.h:646:25: got restricted __le32 [usertype]
<noident>
drivers/crypto/marvell/cesa.h:648:28: sparse: invalid assignment: |=
drivers/crypto/marvell/cesa.h:648:28: left side has type unsigned int
drivers/crypto/marvell/cesa.h:648:28: right side has type restricted
__le32
drivers/crypto/marvell/cesa.h:650:29: sparse: invalid assignment: |=
drivers/crypto/marvell/cesa.h:650:29: left side has type unsigned int
drivers/crypto/marvell/cesa.h:650:29: right side has type restricted
__le32
drivers/crypto/marvell/cesa.h:651:25: sparse: incorrect type in assignment
(different base types)
drivers/crypto/marvell/cesa.h:651:25: expected unsigned int [unsigned]
[usertype] mac_iv
drivers/crypto/marvell/cesa.h:651:25: got restricted __le32 [usertype]
<noident>
drivers/crypto/marvell/hash.c:309:9: sparse: incorrect type in argument 1
(different address spaces)
drivers/crypto/marvell/hash.c:309:9: expected void *to
drivers/crypto/marvell/hash.c:309:9: got void [noderef] <asn:2>*sram
drivers/crypto/marvell/hash.c:341:32: sparse: incorrect type in assignment
(different base types)
drivers/crypto/marvell/hash.c:341:32: expected restricted __be32 <noident>
drivers/crypto/marvell/hash.c:341:32: got unsigned int
drivers/crypto/marvell/hash.c:356:50: sparse: cast from restricted __be32
>> drivers/crypto/marvell/hash.c:356:48: sparse: incorrect type in assignment
>> (different base types)
drivers/crypto/marvell/hash.c:356:48: expected restricted __be32 <noident>
drivers/crypto/marvell/hash.c:356:48: got restricted __le32 [usertype]
<noident>
drivers/crypto/marvell/hash.c:358:50: sparse: cast from restricted __be32
drivers/crypto/marvell/hash.c:358:50: sparse: incorrect type in argument 1
(different base types)
drivers/crypto/marvell/hash.c:358:50: expected unsigned int [unsigned]
[usertype] val
drivers/crypto/marvell/hash.c:358:50: got restricted __be32 <noident>
drivers/crypto/marvell/hash.c:358:50: sparse: cast from restricted __be32
drivers/crypto/marvell/hash.c:358:50: sparse: cast from restricted __be32
drivers/crypto/marvell/hash.c:358:50: sparse: cast from restricted __be32
drivers/crypto/marvell/hash.c:358:50: sparse: cast from restricted __be32
drivers/crypto/marvell/hash.c:384:35: sparse: incorrect type in argument 1
(different base types)
drivers/crypto/marvell/hash.c:384:35: expected unsigned int [unsigned] val
drivers/crypto/marvell/hash.c:384:35: got restricted __be32 <noident>
drivers/crypto/marvell/cesa.h:625:25: sparse: invalid assignment: &=
drivers/crypto/marvell/cesa.h:625:25: left side has type unsigned int
drivers/crypto/marvell/cesa.h:625:25: right side has type restricted
__le32
drivers/crypto/marvell/cesa.h:626:25: sparse: invalid assignment: |=
drivers/crypto/marvell/cesa.h:626:25: left side has type unsigned int
drivers/crypto/marvell/cesa.h:626:25: right side has type restricted
__le32
drivers/crypto/marvell/cesa.h:663:28: sparse: invalid assignment: |=
drivers/crypto/marvell/cesa.h:663:28: left side has type unsigned int
drivers/crypto/marvell/cesa.h:663:28: right side has type restricted
__le32
drivers/crypto/marvell/cesa.h:670:29: sparse: invalid assignment: |=
drivers/crypto/marvell/cesa.h:670:29: left side has type unsigned int
drivers/crypto/marvell/cesa.h:670:29: right side has type restricted
__le32
drivers/crypto/marvell/cesa.h:670:29: sparse: invalid assignment: |=
drivers/crypto/marvell/cesa.h:670:29: left side has type unsigned int
drivers/crypto/marvell/cesa.h:670:29: right side has type restricted
__le32
drivers/crypto/marvell/hash.c:494:59: sparse: incorrect type in argument 2
(different base types)
drivers/crypto/marvell/hash.c:494:59: expected unsigned int [unsigned]
[usertype] flags
drivers/crypto/marvell/hash.c:494:59: got restricted gfp_t [usertype]
flags
drivers/crypto/marvell/cesa.h:670:29: sparse: invalid assignment: |=
drivers/crypto/marvell/cesa.h:670:29: left side has type unsigned int
drivers/crypto/marvell/cesa.h:670:29: right side has type restricted
__le32
drivers/crypto/marvell/cesa.h:631:16: sparse: cast to restricted __le32
drivers/crypto/marvell/cesa.h:625:25: sparse: invalid assignment: &=
drivers/crypto/marvell/cesa.h:625:25: left side has type unsigned int
drivers/crypto/marvell/cesa.h:625:25: right side has type restricted
__le32
drivers/crypto/marvell/cesa.h:626:25: sparse: invalid assignment: |=
drivers/crypto/marvell/cesa.h:626:25: left side has type unsigned int
drivers/crypto/marvell/cesa.h:626:25: right side has type restricted
__le32
drivers/crypto/marvell/hash.c:530:51: sparse: incorrect type in argument 2
(different base types)
drivers/crypto/marvell/hash.c:530:51: expected unsigned int [unsigned]
[usertype] flags
drivers/crypto/marvell/hash.c:530:51: got restricted gfp_t [usertype]
flags
drivers/crypto/marvell/cesa.h:631:16: sparse: cast to restricted __le32
drivers/crypto/marvell/cesa.h:625:25: sparse: invalid assignment: &=
drivers/crypto/marvell/cesa.h:625:25: left side has type unsigned int
drivers/crypto/marvell/cesa.h:625:25: right side has type restricted
__le32
drivers/crypto/marvell/cesa.h:626:25: sparse: invalid assignment: |=
drivers/crypto/marvell/cesa.h:626:25: left side has type unsigned int
drivers/crypto/marvell/cesa.h:626:25: right side has type restricted
__le32
drivers/crypto/marvell/cesa.h:625:25: sparse: invalid assignment: &=
drivers/crypto/marvell/cesa.h:625:25: left side has type unsigned int
drivers/crypto/marvell/cesa.h:625:25: right side has type restricted
__le32
drivers/crypto/marvell/cesa.h:626:25: sparse: invalid assignment: |=
drivers/crypto/marvell/cesa.h:626:25: left side has type unsigned int
drivers/crypto/marvell/cesa.h:626:25: right side has type restricted
__le32
drivers/crypto/marvell/cesa.h:670:29: sparse: invalid assignment: |=
drivers/crypto/marvell/cesa.h:670:29: left side has type unsigned int
drivers/crypto/marvell/cesa.h:670:29: right side has type restricted
__le32
drivers/crypto/marvell/cesa.h:631:16: sparse: cast to restricted __le32
drivers/crypto/marvell/cesa.h:625:25: sparse: invalid assignment: &=
drivers/crypto/marvell/cesa.h:625:25: left side has type unsigned int
drivers/crypto/marvell/cesa.h:625:25: right side has type restricted
__le32
drivers/crypto/marvell/cesa.h:626:25: sparse: invalid assignment: |=
drivers/crypto/marvell/cesa.h:626:25: left side has type unsigned int
drivers/crypto/marvell/cesa.h:626:25: right side has type restricted
__le32
drivers/crypto/marvell/cesa.h:670:29: sparse: invalid assignment: |=
drivers/crypto/marvell/cesa.h:670:29: left side has type unsigned int
drivers/crypto/marvell/cesa.h:670:29: right side has type restricted
__le32
drivers/crypto/marvell/hash.c:616:51: sparse: incorrect type in argument 2
(different base types)
drivers/crypto/marvell/hash.c:616:51: expected unsigned int [unsigned]
[usertype] flags
drivers/crypto/marvell/hash.c:616:51: got restricted gfp_t [usertype]
flags
drivers/crypto/marvell/hash.c:677:57: sparse: incorrect type in argument 2
(different base types)
drivers/crypto/marvell/hash.c:677:57: expected unsigned int [unsigned]
[usertype] flags
drivers/crypto/marvell/hash.c:677:57: got restricted gfp_t [usertype]
flags
drivers/crypto/marvell/cesa.h:663:28: sparse: invalid assignment: |=
drivers/crypto/marvell/cesa.h:663:28: left side has type unsigned int
drivers/crypto/marvell/cesa.h:663:28: right side has type restricted
__le32
drivers/crypto/marvell/cesa.h:663:28: sparse: invalid assignment: |=
drivers/crypto/marvell/cesa.h:663:28: left side has type unsigned int
drivers/crypto/marvell/cesa.h:663:28: right side has type restricted
__le32
drivers/crypto/marvell/cesa.h:636:25: sparse: incorrect type in assignment
(different base types)
drivers/crypto/marvell/cesa.h:636:25: expected unsigned int [unsigned]
[usertype] config
drivers/crypto/marvell/cesa.h:636:25: got restricted __le32 [usertype]
<noident>
drivers/crypto/marvell/cesa.h:636:25: sparse: incorrect type in assignment
(different base types)
drivers/crypto/marvell/cesa.h:636:25: expected unsigned int [unsigned]
[usertype] config
drivers/crypto/marvell/cesa.h:636:25: got restricted __le32 [usertype]
<noident>
drivers/crypto/marvell/cesa.h:636:25: sparse: incorrect type in assignment
(different base types)
drivers/crypto/marvell/cesa.h:636:25: expected unsigned int [unsigned]
[usertype] config
drivers/crypto/marvell/cesa.h:636:25: got restricted __le32 [usertype]
<noident>
drivers/crypto/marvell/hash.c:1169:30: sparse: cast to restricted __be32
drivers/crypto/marvell/hash.c:1169:30: sparse: cast to restricted __be32
drivers/crypto/marvell/hash.c:1169:30: sparse: cast to restricted __be32
drivers/crypto/marvell/hash.c:1169:30: sparse: cast to restricted __be32
drivers/crypto/marvell/hash.c:1169:30: sparse: cast to restricted __be32
drivers/crypto/marvell/hash.c:1169:30: sparse: cast to restricted __be32
drivers/crypto/marvell/hash.c:1172:34: sparse: cast to restricted __be32
drivers/crypto/marvell/hash.c:1172:34: sparse: cast to restricted __be32
drivers/crypto/marvell/hash.c:1172:34: sparse: cast to restricted __be32
vim +356 drivers/crypto/marvell/hash.c
303 struct mv_cesa_ahash_req *creq = ahash_request_ctx(req);
304 struct mv_cesa_ahash_std_req *sreq = &creq->req.std;
305 struct mv_cesa_engine *engine = sreq->base.engine;
306
307 sreq->offset = 0;
308 mv_cesa_adjust_op(engine, &creq->op_tmpl);
> 309 memcpy(engine->sram, &creq->op_tmpl, sizeof(creq->op_tmpl));
310 }
311
312 static void mv_cesa_ahash_step(struct crypto_async_request *req)
313 {
314 struct ahash_request *ahashreq = ahash_request_cast(req);
315 struct mv_cesa_ahash_req *creq = ahash_request_ctx(ahashreq);
316
317 if (creq->req.base.type == CESA_DMA_REQ)
318 mv_cesa_dma_step(&creq->req.dma.base);
319 else
320 mv_cesa_ahash_std_step(ahashreq);
321 }
322
323 static int mv_cesa_ahash_process(struct crypto_async_request *req, u32
status)
324 {
325 struct ahash_request *ahashreq = ahash_request_cast(req);
326 struct mv_cesa_ahash_req *creq = ahash_request_ctx(ahashreq);
327 struct mv_cesa_engine *engine = creq->req.base.engine;
328 unsigned int digsize;
329 int ret, i;
330
331 if (creq->req.base.type == CESA_DMA_REQ)
332 ret = mv_cesa_dma_process(&creq->req.dma.base, status);
333 else
334 ret = mv_cesa_ahash_std_process(ahashreq, status);
335
336 if (ret == -EINPROGRESS)
337 return ret;
338
339 digsize =
crypto_ahash_digestsize(crypto_ahash_reqtfm(ahashreq));
340 for (i = 0; i < digsize / 4; i++)
341 creq->state[i] = readl(engine->regs + CESA_IVDIG(i));
342
343 if (creq->cache_ptr)
344 sg_pcopy_to_buffer(ahashreq->src, creq->src_nents,
345 creq->cache,
346 creq->cache_ptr,
347 ahashreq->nbytes - creq->cache_ptr);
348
349 if (creq->last_req) {
350 for (i = 0; i < digsize / 4; i++) {
351 /*
352 * Hardware provides MD5 digest in a different
353 * endianness than SHA-1 and SHA-256 ones.
354 */
355 if (digsize == MD5_DIGEST_SIZE)
> 356 creq->state[i] =
> cpu_to_le32(creq->state[i]);
357 else
358 creq->state[i] =
cpu_to_be32(creq->state[i]);
359 }
---
0-DAY kernel test infrastructure Open Source Technology Center
http://lists.01.org/mailman/listinfo/kbuild Intel Corporation
--
To unsubscribe from this list: send the line "unsubscribe linux-crypto" in