tree:
https://chromium.googlesource.com/chromiumos/third_party/kernel chromeos-5.4
head: 886e9593388032acd06f2e53d5d80aee644c8879
commit: 3dbd09d30b96ba15e3d59a0fc7ef83d0e3752837 [102/103] UPSTREAM: security: allow using
Clang's zero initialization for stack variables
config: mips-randconfig-r036-20210421 (attached as .config)
compiler: clang version 13.0.0 (
https://github.com/llvm/llvm-project
f5446b769a7929806f72256fccd4826d66502e59)
reproduce (this is a W=1 build):
wget
https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O
~/bin/make.cross
chmod +x ~/bin/make.cross
# install mips cross compiling tool for clang build
# apt-get install binutils-mips-linux-gnu
git remote add chrome-os
https://chromium.googlesource.com/chromiumos/third_party/kernel
git fetch --no-tags chrome-os chromeos-5.4
git checkout 3dbd09d30b96ba15e3d59a0fc7ef83d0e3752837
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 ARCH=mips
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp(a)intel.com>
All warnings (new ones prefixed by >>):
> drivers/crypto/inside-secure/safexcel_cipher.c:303:12: warning:
stack frame size of 1032 bytes in function 'safexcel_aead_setkey'
[-Wframe-larger-than=]
static int safexcel_aead_setkey(struct crypto_aead *ctfm,
const u8 *key,
^
1 warning generated.
vim +/safexcel_aead_setkey +303 drivers/crypto/inside-secure/safexcel_cipher.c
1b44c5a60c137e Antoine Tenart 2017-05-24 302
77cdd4efe57134 Pascal van Leeuwen 2019-07-05 @303 static int safexcel_aead_setkey(struct
crypto_aead *ctfm, const u8 *key,
f6beaea304872b Antoine Tenart 2018-05-14 304 unsigned int len)
f6beaea304872b Antoine Tenart 2018-05-14 305 {
f6beaea304872b Antoine Tenart 2018-05-14 306 struct crypto_tfm *tfm =
crypto_aead_tfm(ctfm);
f6beaea304872b Antoine Tenart 2018-05-14 307 struct safexcel_cipher_ctx *ctx =
crypto_tfm_ctx(tfm);
f6beaea304872b Antoine Tenart 2018-05-14 308 struct safexcel_ahash_export_state
istate, ostate;
f6beaea304872b Antoine Tenart 2018-05-14 309 struct safexcel_crypto_priv *priv =
ctx->priv;
f6beaea304872b Antoine Tenart 2018-05-14 310 struct crypto_authenc_keys keys;
0e17e3621a28a6 Pascal van Leeuwen 2019-07-05 311 struct crypto_aes_ctx aes;
0e17e3621a28a6 Pascal van Leeuwen 2019-07-05 312 int err = -EINVAL;
f6beaea304872b Antoine Tenart 2018-05-14 313
f6beaea304872b Antoine Tenart 2018-05-14 314 if
(crypto_authenc_extractkeys(&keys, key, len) != 0)
f6beaea304872b Antoine Tenart 2018-05-14 315 goto badkey;
f6beaea304872b Antoine Tenart 2018-05-14 316
0e17e3621a28a6 Pascal van Leeuwen 2019-07-05 317 if (ctx->mode ==
CONTEXT_CONTROL_CRYPTO_MODE_CTR_LOAD) {
f26882a3475eb7 Pascal van Leeuwen 2019-07-30 318 /* Minimum keysize is minimum AES key
size + nonce size */
f26882a3475eb7 Pascal van Leeuwen 2019-07-30 319 if (keys.enckeylen <
(AES_MIN_KEY_SIZE +
f26882a3475eb7 Pascal van Leeuwen 2019-07-30 320 CTR_RFC3686_NONCE_SIZE))
f6beaea304872b Antoine Tenart 2018-05-14 321 goto badkey;
0e17e3621a28a6 Pascal van Leeuwen 2019-07-05 322 /* last 4 bytes of key are the nonce!
*/
f26882a3475eb7 Pascal van Leeuwen 2019-07-30 323 ctx->nonce = *(u32 *)(keys.enckey
+ keys.enckeylen -
f26882a3475eb7 Pascal van Leeuwen 2019-07-30 324 CTR_RFC3686_NONCE_SIZE);
0e17e3621a28a6 Pascal van Leeuwen 2019-07-05 325 /* exclude the nonce here */
f26882a3475eb7 Pascal van Leeuwen 2019-07-30 326 keys.enckeylen -=
CONTEXT_CONTROL_CRYPTO_MODE_CTR_LOAD;
0e17e3621a28a6 Pascal van Leeuwen 2019-07-05 327 }
f6beaea304872b Antoine Tenart 2018-05-14 328
f6beaea304872b Antoine Tenart 2018-05-14 329 /* Encryption key */
0e17e3621a28a6 Pascal van Leeuwen 2019-07-05 330 switch (ctx->alg) {
0e17e3621a28a6 Pascal van Leeuwen 2019-07-05 331 case SAFEXCEL_3DES:
21f5a15e0f26c7 Ard Biesheuvel 2019-08-15 332 err = verify_aead_des3_key(ctfm,
keys.enckey, keys.enckeylen);
77cdd4efe57134 Pascal van Leeuwen 2019-07-05 333 if (unlikely(err))
0e17e3621a28a6 Pascal van Leeuwen 2019-07-05 334 goto badkey_expflags;
0e17e3621a28a6 Pascal van Leeuwen 2019-07-05 335 break;
0e17e3621a28a6 Pascal van Leeuwen 2019-07-05 336 case SAFEXCEL_AES:
0e17e3621a28a6 Pascal van Leeuwen 2019-07-05 337 err = aes_expandkey(&aes,
keys.enckey, keys.enckeylen);
0e17e3621a28a6 Pascal van Leeuwen 2019-07-05 338 if (unlikely(err))
0e17e3621a28a6 Pascal van Leeuwen 2019-07-05 339 goto badkey;
0e17e3621a28a6 Pascal van Leeuwen 2019-07-05 340 break;
0e17e3621a28a6 Pascal van Leeuwen 2019-07-05 341 default:
0e17e3621a28a6 Pascal van Leeuwen 2019-07-05 342 dev_err(priv->dev, "aead:
unsupported cipher algorithm\n");
0e17e3621a28a6 Pascal van Leeuwen 2019-07-05 343 goto badkey;
77cdd4efe57134 Pascal van Leeuwen 2019-07-05 344 }
77cdd4efe57134 Pascal van Leeuwen 2019-07-05 345
53c83e915ce8b2 Antoine Tenart 2018-06-28 346 if (priv->flags &
EIP197_TRC_CACHE && ctx->base.ctxr_dma &&
f6beaea304872b Antoine Tenart 2018-05-14 347 memcmp(ctx->key, keys.enckey,
keys.enckeylen))
f6beaea304872b Antoine Tenart 2018-05-14 348 ctx->base.needs_inv = true;
f6beaea304872b Antoine Tenart 2018-05-14 349
f6beaea304872b Antoine Tenart 2018-05-14 350 /* Auth key */
a7dea8c0ff9f25 Ofer Heifetz 2018-06-28 351 switch (ctx->hash_alg) {
01ba061d0fd769 Antoine Tenart 2018-05-14 352 case CONTEXT_CONTROL_CRYPTO_ALG_SHA1:
01ba061d0fd769 Antoine Tenart 2018-05-14 353 if
(safexcel_hmac_setkey("safexcel-sha1", keys.authkey,
01ba061d0fd769 Antoine Tenart 2018-05-14 354 keys.authkeylen, &istate,
&ostate))
01ba061d0fd769 Antoine Tenart 2018-05-14 355 goto badkey;
01ba061d0fd769 Antoine Tenart 2018-05-14 356 break;
678b2878ac396f Antoine Tenart 2018-05-14 357 case
CONTEXT_CONTROL_CRYPTO_ALG_SHA224:
678b2878ac396f Antoine Tenart 2018-05-14 358 if
(safexcel_hmac_setkey("safexcel-sha224", keys.authkey,
678b2878ac396f Antoine Tenart 2018-05-14 359 keys.authkeylen, &istate,
&ostate))
678b2878ac396f Antoine Tenart 2018-05-14 360 goto badkey;
678b2878ac396f Antoine Tenart 2018-05-14 361 break;
678b2878ac396f Antoine Tenart 2018-05-14 362 case
CONTEXT_CONTROL_CRYPTO_ALG_SHA256:
f6beaea304872b Antoine Tenart 2018-05-14 363 if
(safexcel_hmac_setkey("safexcel-sha256", keys.authkey,
f6beaea304872b Antoine Tenart 2018-05-14 364 keys.authkeylen, &istate,
&ostate))
f6beaea304872b Antoine Tenart 2018-05-14 365 goto badkey;
678b2878ac396f Antoine Tenart 2018-05-14 366 break;
ea23cb533ce419 Antoine Tenart 2018-05-29 367 case
CONTEXT_CONTROL_CRYPTO_ALG_SHA384:
ea23cb533ce419 Antoine Tenart 2018-05-29 368 if
(safexcel_hmac_setkey("safexcel-sha384", keys.authkey,
ea23cb533ce419 Antoine Tenart 2018-05-29 369 keys.authkeylen, &istate,
&ostate))
ea23cb533ce419 Antoine Tenart 2018-05-29 370 goto badkey;
ea23cb533ce419 Antoine Tenart 2018-05-29 371 break;
87eee125e7490c Antoine Tenart 2018-05-29 372 case
CONTEXT_CONTROL_CRYPTO_ALG_SHA512:
87eee125e7490c Antoine Tenart 2018-05-29 373 if
(safexcel_hmac_setkey("safexcel-sha512", keys.authkey,
87eee125e7490c Antoine Tenart 2018-05-29 374 keys.authkeylen, &istate,
&ostate))
87eee125e7490c Antoine Tenart 2018-05-29 375 goto badkey;
87eee125e7490c Antoine Tenart 2018-05-29 376 break;
678b2878ac396f Antoine Tenart 2018-05-14 377 default:
678b2878ac396f Antoine Tenart 2018-05-14 378 dev_err(priv->dev, "aead:
unsupported hash algorithm\n");
678b2878ac396f Antoine Tenart 2018-05-14 379 goto badkey;
678b2878ac396f Antoine Tenart 2018-05-14 380 }
f6beaea304872b Antoine Tenart 2018-05-14 381
f6beaea304872b Antoine Tenart 2018-05-14 382 crypto_aead_set_flags(ctfm,
crypto_aead_get_flags(ctfm) &
f6beaea304872b Antoine Tenart 2018-05-14 383 CRYPTO_TFM_RES_MASK);
f6beaea304872b Antoine Tenart 2018-05-14 384
53c83e915ce8b2 Antoine Tenart 2018-06-28 385 if (priv->flags &
EIP197_TRC_CACHE && ctx->base.ctxr_dma &&
f6beaea304872b Antoine Tenart 2018-05-14 386 (memcmp(ctx->ipad,
istate.state, ctx->state_sz) ||
f6beaea304872b Antoine Tenart 2018-05-14 387 memcmp(ctx->opad,
ostate.state, ctx->state_sz)))
f6beaea304872b Antoine Tenart 2018-05-14 388 ctx->base.needs_inv = true;
f6beaea304872b Antoine Tenart 2018-05-14 389
f6beaea304872b Antoine Tenart 2018-05-14 390 /* Now copy the keys into the context
*/
f6beaea304872b Antoine Tenart 2018-05-14 391 memcpy(ctx->key, keys.enckey,
keys.enckeylen);
f6beaea304872b Antoine Tenart 2018-05-14 392 ctx->key_len = keys.enckeylen;
f6beaea304872b Antoine Tenart 2018-05-14 393
f6beaea304872b Antoine Tenart 2018-05-14 394 memcpy(ctx->ipad,
&istate.state, ctx->state_sz);
f6beaea304872b Antoine Tenart 2018-05-14 395 memcpy(ctx->opad,
&ostate.state, ctx->state_sz);
f6beaea304872b Antoine Tenart 2018-05-14 396
f6beaea304872b Antoine Tenart 2018-05-14 397 memzero_explicit(&keys,
sizeof(keys));
f6beaea304872b Antoine Tenart 2018-05-14 398 return 0;
f6beaea304872b Antoine Tenart 2018-05-14 399
f6beaea304872b Antoine Tenart 2018-05-14 400 badkey:
f6beaea304872b Antoine Tenart 2018-05-14 401 crypto_aead_set_flags(ctfm,
CRYPTO_TFM_RES_BAD_KEY_LEN);
0e17e3621a28a6 Pascal van Leeuwen 2019-07-05 402 badkey_expflags:
f6beaea304872b Antoine Tenart 2018-05-14 403 memzero_explicit(&keys,
sizeof(keys));
0e17e3621a28a6 Pascal van Leeuwen 2019-07-05 404 return err;
f6beaea304872b Antoine Tenart 2018-05-14 405 }
f6beaea304872b Antoine Tenart 2018-05-14 406
:::::: The code at line 303 was first introduced by commit
:::::: 77cdd4efe571345e9c116e65f64a616969e0bc35 crypto: inside-secure - add support for
authenc(hmac(sha1),cbc(des3_ede))
:::::: TO: Pascal van Leeuwen <pascalvanl(a)gmail.com>
:::::: CC: Herbert Xu <herbert(a)gondor.apana.org.au>
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org