mirror of
git://git.yoctoproject.org/linux-yocto.git
synced 2025-10-23 07:23:12 +02:00
This push fixes a regression in ahash (broken fallback finup)
and reinstates a Kconfig option to control the extra self-tests. -----BEGIN PGP SIGNATURE----- iQIzBAABCgAdFiEEn51F/lCuNhUwmDeSxycdCkmxi6cFAmhSgQIACgkQxycdCkmx i6eWig//aNg4YL30eTh41eTWTCiA1PLZpyOE2/Wz7q/Yg4M0Refn85A+tREm18q+ uwuZKAoFz8VaF0trqSQQ3PFzZaJWWRn0yLqeToxGyd7sY9kBh93FdQLub8wTxO0F qDPLnAR+Gt7VAGcYSjhyB/TCsJ5h6oRN87qMIr8g807SiIB6mHiuXxJAAKy1U7OD cXafp3HTkzUjgk/wbj7qSK6HJR3Cq3o/3JmsE/D7yvJRH1Bx7mNoiRpEX17CkgQX qVZmLj8lE4HzFpTLKBAY8sXlzxscN+rHnS5WUhTqWL1hAI2b52p1moJPzT9QM/Zb yI+x1DbO21Pvr4mZJ/hX18Y9VvTbea0hkD/wFD+hKJyQ9j70B8/bBeT/sOxKqDZn 0G1o9UyVTNdw4m2m/6lYJBgG0yiuD3hZID+Wjgq6lOsfoVBThU3CWq11NW98HQKz 0VUWztcG7JTqM1wUwwjlMXnm8+WKwiuYqYZCwBl8o0Ii29/Sm0pGMXtiDqmWFWLA a4FJNFxiKEfVA95yRuRPfEM7KMwRWdw2C9YGe6hk3kcUbfDYSJykUme/USFzz8X8 5lmwWESNggggQEw9BxUAILIzRZwsDhCakgRjd11JRbNjrNTwXIbP9+nv+LH91mPK zm5DJqyqSUVr2iXeQYYH/etyRsMX+dAuWPrFvvjuDBb8/fgEce4= =6/TP -----END PGP SIGNATURE----- Merge tag 'v6.16-p5' of git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6 Pull crypto fixes from Herbert Xu: "This fixes a regression in ahash (broken fallback finup) and reinstates a Kconfig option to control the extra self-tests" * tag 'v6.16-p5' of git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6: crypto: ahash - Fix infinite recursion in ahash_def_finup crypto: testmgr - reinstate kconfig control over full self-tests
This commit is contained in:
commit
0fa5248255
|
|
@ -176,16 +176,33 @@ config CRYPTO_USER
|
||||||
|
|
||||||
config CRYPTO_SELFTESTS
|
config CRYPTO_SELFTESTS
|
||||||
bool "Enable cryptographic self-tests"
|
bool "Enable cryptographic self-tests"
|
||||||
depends on DEBUG_KERNEL
|
depends on EXPERT
|
||||||
help
|
help
|
||||||
Enable the cryptographic self-tests.
|
Enable the cryptographic self-tests.
|
||||||
|
|
||||||
The cryptographic self-tests run at boot time, or at algorithm
|
The cryptographic self-tests run at boot time, or at algorithm
|
||||||
registration time if algorithms are dynamically loaded later.
|
registration time if algorithms are dynamically loaded later.
|
||||||
|
|
||||||
This is primarily intended for developer use. It should not be
|
There are two main use cases for these tests:
|
||||||
enabled in production kernels, unless you are trying to use these
|
|
||||||
tests to fulfill a FIPS testing requirement.
|
- Development and pre-release testing. In this case, also enable
|
||||||
|
CRYPTO_SELFTESTS_FULL to get the full set of tests. All crypto code
|
||||||
|
in the kernel is expected to pass the full set of tests.
|
||||||
|
|
||||||
|
- Production kernels, to help prevent buggy drivers from being used
|
||||||
|
and/or meet FIPS 140-3 pre-operational testing requirements. In
|
||||||
|
this case, enable CRYPTO_SELFTESTS but not CRYPTO_SELFTESTS_FULL.
|
||||||
|
|
||||||
|
config CRYPTO_SELFTESTS_FULL
|
||||||
|
bool "Enable the full set of cryptographic self-tests"
|
||||||
|
depends on CRYPTO_SELFTESTS
|
||||||
|
help
|
||||||
|
Enable the full set of cryptographic self-tests for each algorithm.
|
||||||
|
|
||||||
|
The full set of tests should be enabled for development and
|
||||||
|
pre-release testing, but not in production kernels.
|
||||||
|
|
||||||
|
All crypto code in the kernel is expected to pass the full tests.
|
||||||
|
|
||||||
config CRYPTO_NULL
|
config CRYPTO_NULL
|
||||||
tristate "Null algorithms"
|
tristate "Null algorithms"
|
||||||
|
|
|
||||||
|
|
@ -600,12 +600,14 @@ static void ahash_def_finup_done2(void *data, int err)
|
||||||
|
|
||||||
static int ahash_def_finup_finish1(struct ahash_request *req, int err)
|
static int ahash_def_finup_finish1(struct ahash_request *req, int err)
|
||||||
{
|
{
|
||||||
|
struct crypto_ahash *tfm = crypto_ahash_reqtfm(req);
|
||||||
|
|
||||||
if (err)
|
if (err)
|
||||||
goto out;
|
goto out;
|
||||||
|
|
||||||
req->base.complete = ahash_def_finup_done2;
|
req->base.complete = ahash_def_finup_done2;
|
||||||
|
|
||||||
err = crypto_ahash_final(req);
|
err = crypto_ahash_alg(tfm)->final(req);
|
||||||
if (err == -EINPROGRESS || err == -EBUSY)
|
if (err == -EINPROGRESS || err == -EBUSY)
|
||||||
return err;
|
return err;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -45,6 +45,7 @@ static bool notests;
|
||||||
module_param(notests, bool, 0644);
|
module_param(notests, bool, 0644);
|
||||||
MODULE_PARM_DESC(notests, "disable all crypto self-tests");
|
MODULE_PARM_DESC(notests, "disable all crypto self-tests");
|
||||||
|
|
||||||
|
#ifdef CONFIG_CRYPTO_SELFTESTS_FULL
|
||||||
static bool noslowtests;
|
static bool noslowtests;
|
||||||
module_param(noslowtests, bool, 0644);
|
module_param(noslowtests, bool, 0644);
|
||||||
MODULE_PARM_DESC(noslowtests, "disable slow crypto self-tests");
|
MODULE_PARM_DESC(noslowtests, "disable slow crypto self-tests");
|
||||||
|
|
@ -52,6 +53,10 @@ MODULE_PARM_DESC(noslowtests, "disable slow crypto self-tests");
|
||||||
static unsigned int fuzz_iterations = 100;
|
static unsigned int fuzz_iterations = 100;
|
||||||
module_param(fuzz_iterations, uint, 0644);
|
module_param(fuzz_iterations, uint, 0644);
|
||||||
MODULE_PARM_DESC(fuzz_iterations, "number of fuzz test iterations");
|
MODULE_PARM_DESC(fuzz_iterations, "number of fuzz test iterations");
|
||||||
|
#else
|
||||||
|
#define noslowtests 1
|
||||||
|
#define fuzz_iterations 0
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifndef CONFIG_CRYPTO_SELFTESTS
|
#ifndef CONFIG_CRYPTO_SELFTESTS
|
||||||
|
|
||||||
|
|
@ -319,9 +324,9 @@ struct testvec_config {
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* The following are the lists of testvec_configs to test for each algorithm
|
* The following are the lists of testvec_configs to test for each algorithm
|
||||||
* type when the fast crypto self-tests are enabled. They aim to provide good
|
* type when the "fast" crypto self-tests are enabled. They aim to provide good
|
||||||
* test coverage, while keeping the test time much shorter than the full tests
|
* test coverage, while keeping the test time much shorter than the "full" tests
|
||||||
* so that the fast tests can be used to fulfill FIPS 140 testing requirements.
|
* so that the "fast" tests can be enabled in a wider range of circumstances.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* Configs for skciphers and aeads */
|
/* Configs for skciphers and aeads */
|
||||||
|
|
@ -1183,14 +1188,18 @@ static void generate_random_testvec_config(struct rnd_state *rng,
|
||||||
|
|
||||||
static void crypto_disable_simd_for_test(void)
|
static void crypto_disable_simd_for_test(void)
|
||||||
{
|
{
|
||||||
|
#ifdef CONFIG_CRYPTO_SELFTESTS_FULL
|
||||||
migrate_disable();
|
migrate_disable();
|
||||||
__this_cpu_write(crypto_simd_disabled_for_test, true);
|
__this_cpu_write(crypto_simd_disabled_for_test, true);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
static void crypto_reenable_simd_for_test(void)
|
static void crypto_reenable_simd_for_test(void)
|
||||||
{
|
{
|
||||||
|
#ifdef CONFIG_CRYPTO_SELFTESTS_FULL
|
||||||
__this_cpu_write(crypto_simd_disabled_for_test, false);
|
__this_cpu_write(crypto_simd_disabled_for_test, false);
|
||||||
migrate_enable();
|
migrate_enable();
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
||||||
|
|
@ -44,9 +44,11 @@ void simd_unregister_aeads(struct aead_alg *algs, int count,
|
||||||
*
|
*
|
||||||
* This delegates to may_use_simd(), except that this also returns false if SIMD
|
* This delegates to may_use_simd(), except that this also returns false if SIMD
|
||||||
* in crypto code has been temporarily disabled on this CPU by the crypto
|
* in crypto code has been temporarily disabled on this CPU by the crypto
|
||||||
* self-tests, in order to test the no-SIMD fallback code.
|
* self-tests, in order to test the no-SIMD fallback code. This override is
|
||||||
|
* currently limited to configurations where the "full" self-tests are enabled,
|
||||||
|
* because it might be a bit too invasive to be part of the "fast" self-tests.
|
||||||
*/
|
*/
|
||||||
#ifdef CONFIG_CRYPTO_SELFTESTS
|
#ifdef CONFIG_CRYPTO_SELFTESTS_FULL
|
||||||
DECLARE_PER_CPU(bool, crypto_simd_disabled_for_test);
|
DECLARE_PER_CPU(bool, crypto_simd_disabled_for_test);
|
||||||
#define crypto_simd_usable() \
|
#define crypto_simd_usable() \
|
||||||
(may_use_simd() && !this_cpu_read(crypto_simd_disabled_for_test))
|
(may_use_simd() && !this_cpu_read(crypto_simd_disabled_for_test))
|
||||||
|
|
|
||||||
|
|
@ -66,7 +66,7 @@ libsha256-generic-y := sha256-generic.o
|
||||||
|
|
||||||
obj-$(CONFIG_MPILIB) += mpi/
|
obj-$(CONFIG_MPILIB) += mpi/
|
||||||
|
|
||||||
obj-$(CONFIG_CRYPTO_SELFTESTS) += simd.o
|
obj-$(CONFIG_CRYPTO_SELFTESTS_FULL) += simd.o
|
||||||
|
|
||||||
obj-$(CONFIG_CRYPTO_LIB_SM3) += libsm3.o
|
obj-$(CONFIG_CRYPTO_LIB_SM3) += libsm3.o
|
||||||
libsm3-y := sm3.o
|
libsm3-y := sm3.o
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user