tree:
https://git.kernel.org/pub/scm/linux/kernel/git/herbert/cryptodev-2.6.git master
head: 38641b83ebc54635151810eeef00b61da3097952
commit: 9e46eafdf82a67dd069eef27c48898b79379c9f2 [9/15] crypto: inside-secure -
sha384 support
reproduce:
# apt-get install sparse
git checkout 9e46eafdf82a67dd069eef27c48898b79379c9f2
make ARCH=x86_64 allmodconfig
make C=1 CF=-D__CHECK_ENDIAN__
sparse warnings: (new ones prefixed by >>)
include/linux/slab.h:631:13: sparse: undefined identifier
'__builtin_mul_overflow'
drivers/crypto/inside-secure/safexcel_hash.c:1009:45: sparse: cast to
restricted __le32
drivers/crypto/inside-secure/safexcel_hash.c:1010:45: sparse: cast to
restricted __le32
include/linux/slab.h:631:13: sparse: call with no type!
drivers/crypto/inside-secure/safexcel_hash.c:1303:25: sparse: cast truncates
bits from constant value (6a09e667f3bcc908 becomes f3bcc908)
drivers/crypto/inside-secure/safexcel_hash.c:1305:25: sparse: cast truncates
bits from constant value (bb67ae8584caa73b becomes 84caa73b)
drivers/crypto/inside-secure/safexcel_hash.c:1307:25: sparse: cast truncates
bits from constant value (3c6ef372fe94f82b becomes fe94f82b)
drivers/crypto/inside-secure/safexcel_hash.c:1309:25: sparse: cast truncates
bits from constant value (a54ff53a5f1d36f1 becomes 5f1d36f1)
drivers/crypto/inside-secure/safexcel_hash.c:1311:25: sparse: cast truncates
bits from constant value (510e527fade682d1 becomes ade682d1)
drivers/crypto/inside-secure/safexcel_hash.c:1313:26: sparse: cast truncates
bits from constant value (9b05688c2b3e6c1f becomes 2b3e6c1f)
drivers/crypto/inside-secure/safexcel_hash.c:1315:26: sparse: cast truncates
bits from constant value (1f83d9abfb41bd6b becomes fb41bd6b)
drivers/crypto/inside-secure/safexcel_hash.c:1317:26: sparse: cast truncates
bits from constant value (5be0cd19137e2179 becomes 137e2179)
>> drivers/crypto/inside-secure/safexcel_hash.c:1373:25: sparse: cast truncates
>> bits from constant value (cbbb9d5dc1059ed8 becomes c1059ed8)
>> drivers/crypto/inside-secure/safexcel_hash.c:1375:25: sparse: cast truncates
>> bits from constant value (629a292a367cd507 becomes 367cd507)
>> drivers/crypto/inside-secure/safexcel_hash.c:1377:25: sparse: cast truncates
>> bits from constant value (9159015a3070dd17 becomes 3070dd17)
>> drivers/crypto/inside-secure/safexcel_hash.c:1379:25: sparse: cast truncates
>> bits from constant value (152fecd8f70e5939 becomes f70e5939)
>> drivers/crypto/inside-secure/safexcel_hash.c:1381:25: sparse: cast truncates
>> bits from constant value (67332667ffc00b31 becomes ffc00b31)
>> drivers/crypto/inside-secure/safexcel_hash.c:1383:26: sparse: cast truncates
>> bits from constant value (8eb44a8768581511 becomes 68581511)
>> drivers/crypto/inside-secure/safexcel_hash.c:1385:26: sparse: cast truncates
>> bits from constant value (db0c2e0d64f98fa7 becomes 64f98fa7)
>> drivers/crypto/inside-secure/safexcel_hash.c:1387:26: sparse: cast truncates
>> bits from constant value (47b5481dbefa4fa4 becomes befa4fa4)
vim +1373 drivers/crypto/inside-secure/safexcel_hash.c
1295
1296 static int safexcel_sha512_init(struct ahash_request *areq)
1297 {
1298 struct safexcel_ahash_ctx *ctx =
crypto_ahash_ctx(crypto_ahash_reqtfm(areq));
1299 struct safexcel_ahash_req *req = ahash_request_ctx(areq);
1300
1301 memset(req, 0, sizeof(*req));
1302
> 1303 req->state[0] = lower_32_bits(SHA512_H0);
1304 req->state[1] = upper_32_bits(SHA512_H0);
> 1305 req->state[2] = lower_32_bits(SHA512_H1);
1306 req->state[3] = upper_32_bits(SHA512_H1);
> 1307 req->state[4] = lower_32_bits(SHA512_H2);
1308 req->state[5] = upper_32_bits(SHA512_H2);
> 1309 req->state[6] = lower_32_bits(SHA512_H3);
1310 req->state[7] = upper_32_bits(SHA512_H3);
> 1311 req->state[8] = lower_32_bits(SHA512_H4);
1312 req->state[9] = upper_32_bits(SHA512_H4);
> 1313 req->state[10] = lower_32_bits(SHA512_H5);
1314 req->state[11] = upper_32_bits(SHA512_H5);
> 1315 req->state[12] = lower_32_bits(SHA512_H6);
1316 req->state[13] = upper_32_bits(SHA512_H6);
1317 req->state[14] = lower_32_bits(SHA512_H7);
1318 req->state[15] = upper_32_bits(SHA512_H7);
1319
1320 ctx->alg = CONTEXT_CONTROL_CRYPTO_ALG_SHA512;
1321 req->digest = CONTEXT_CONTROL_DIGEST_PRECOMPUTED;
1322 req->state_sz = SHA512_DIGEST_SIZE;
1323
1324 return 0;
1325 }
1326
1327 static int safexcel_sha512_digest(struct ahash_request *areq)
1328 {
1329 int ret = safexcel_sha512_init(areq);
1330
1331 if (ret)
1332 return ret;
1333
1334 return safexcel_ahash_finup(areq);
1335 }
1336
1337 struct safexcel_alg_template safexcel_alg_sha512 = {
1338 .type = SAFEXCEL_ALG_TYPE_AHASH,
1339 .alg.ahash = {
1340 .init = safexcel_sha512_init,
1341 .update = safexcel_ahash_update,
1342 .final = safexcel_ahash_final,
1343 .finup = safexcel_ahash_finup,
1344 .digest = safexcel_sha512_digest,
1345 .export = safexcel_ahash_export,
1346 .import = safexcel_ahash_import,
1347 .halg = {
1348 .digestsize = SHA512_DIGEST_SIZE,
1349 .statesize = sizeof(struct
safexcel_ahash_export_state),
1350 .base = {
1351 .cra_name = "sha512",
1352 .cra_driver_name = "safexcel-sha512",
1353 .cra_priority = 300,
1354 .cra_flags = CRYPTO_ALG_ASYNC |
1355
CRYPTO_ALG_KERN_DRIVER_ONLY,
1356 .cra_blocksize = SHA512_BLOCK_SIZE,
1357 .cra_ctxsize = sizeof(struct
safexcel_ahash_ctx),
1358 .cra_init = safexcel_ahash_cra_init,
1359 .cra_exit = safexcel_ahash_cra_exit,
1360 .cra_module = THIS_MODULE,
1361 },
1362 },
1363 },
1364 };
1365
1366 static int safexcel_sha384_init(struct ahash_request *areq)
1367 {
1368 struct safexcel_ahash_ctx *ctx =
crypto_ahash_ctx(crypto_ahash_reqtfm(areq));
1369 struct safexcel_ahash_req *req = ahash_request_ctx(areq);
1370
1371 memset(req, 0, sizeof(*req));
1372
> 1373 req->state[0] = lower_32_bits(SHA384_H0);
1374 req->state[1] = upper_32_bits(SHA384_H0);
> 1375 req->state[2] = lower_32_bits(SHA384_H1);
1376 req->state[3] = upper_32_bits(SHA384_H1);
> 1377 req->state[4] = lower_32_bits(SHA384_H2);
1378 req->state[5] = upper_32_bits(SHA384_H2);
> 1379 req->state[6] = lower_32_bits(SHA384_H3);
1380 req->state[7] = upper_32_bits(SHA384_H3);
> 1381 req->state[8] = lower_32_bits(SHA384_H4);
1382 req->state[9] = upper_32_bits(SHA384_H4);
> 1383 req->state[10] = lower_32_bits(SHA384_H5);
1384 req->state[11] = upper_32_bits(SHA384_H5);
> 1385 req->state[12] = lower_32_bits(SHA384_H6);
1386 req->state[13] = upper_32_bits(SHA384_H6);
> 1387 req->state[14] = lower_32_bits(SHA384_H7);
1388 req->state[15] = upper_32_bits(SHA384_H7);
1389
1390 ctx->alg = CONTEXT_CONTROL_CRYPTO_ALG_SHA384;
1391 req->digest = CONTEXT_CONTROL_DIGEST_PRECOMPUTED;
1392 req->state_sz = SHA512_DIGEST_SIZE;
1393
1394 return 0;
1395 }
1396
---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation