diff options
author | Eric Biggers <ebiggers@google.com> | 2019-03-13 06:12:52 +0100 |
---|---|---|
committer | Herbert Xu <herbert@gondor.apana.org.au> | 2019-03-22 13:57:28 +0100 |
commit | 6570737c7fa04747d09cbc966972cedd3c0af00b (patch) | |
tree | a78a7e9a2a61a9e686de2e1da8a3e2bcc4b504cb /drivers/crypto/ccree/cc_cipher.c | |
parent | crypto: simd - convert to use crypto_simd_usable() (diff) | |
download | linux-6570737c7fa04747d09cbc966972cedd3c0af00b.tar.xz linux-6570737c7fa04747d09cbc966972cedd3c0af00b.zip |
crypto: testmgr - test the !may_use_simd() fallback code
All crypto API algorithms are supposed to support the case where they
are called in a context where SIMD instructions are unusable, e.g. IRQ
context on some architectures. However, this isn't tested for by the
self-tests, causing bugs to go undetected.
Now that all algorithms have been converted to use crypto_simd_usable(),
update the self-tests to test the no-SIMD case. First, a bool
testvec_config::nosimd is added. When set, the crypto operation is
executed with preemption disabled and with crypto_simd_usable() mocked
out to return false on the current CPU.
A bool test_sg_division::nosimd is also added. For hash algorithms it's
honored by the corresponding ->update(). By setting just a subset of
these bools, the case where some ->update()s are done in SIMD context
and some are done in no-SIMD context is also tested.
These bools are then randomly set by generate_random_testvec_config().
For now, all no-SIMD testing is limited to the extra crypto self-tests,
because it might be a bit too invasive for the regular self-tests.
But this could be changed later.
This has already found bugs in the arm64 AES-GCM and ChaCha algorithms.
This would have found some past bugs as well.
Signed-off-by: Eric Biggers <ebiggers@google.com>
Acked-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Diffstat (limited to 'drivers/crypto/ccree/cc_cipher.c')
0 files changed, 0 insertions, 0 deletions