| From 0b767f96164b2b27488e3daa722ff16e89d49314 Mon Sep 17 00:00:00 2001 |
| From: Alexander Shishkin <virtuoso@slind.org> |
| Date: Thu, 3 Jun 2010 20:53:43 +1000 |
| Subject: crypto: testmgr - add an option to disable cryptoalgos' self-tests |
| |
| From: Alexander Shishkin <virtuoso@slind.org> |
| |
| commit 0b767f96164b2b27488e3daa722ff16e89d49314 upstream. |
| |
| By default, CONFIG_CRYPTO_MANAGER_TESTS will be enabled and thus |
| self-tests will still run, but it is now possible to disable them |
| to gain some time during bootup. |
| |
| Signed-off-by: Alexander Shishkin <virtuoso@slind.org> |
| Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> |
| |
| --- |
| crypto/Kconfig | 8 ++++++++ |
| crypto/algboss.c | 4 ++++ |
| crypto/testmgr.c | 14 ++++++++++++++ |
| 3 files changed, 26 insertions(+) |
| |
| --- a/crypto/Kconfig |
| +++ b/crypto/Kconfig |
| @@ -96,6 +96,14 @@ config CRYPTO_MANAGER2 |
| select CRYPTO_BLKCIPHER2 |
| select CRYPTO_PCOMP |
| |
| +config CRYPTO_MANAGER_TESTS |
| + bool "Run algolithms' self-tests" |
| + default y |
| + depends on CRYPTO_MANAGER2 |
| + help |
| + Run cryptomanager's tests for the new crypto algorithms being |
| + registered. |
| + |
| config CRYPTO_GF128MUL |
| tristate "GF(2^128) multiplication functions (EXPERIMENTAL)" |
| depends on EXPERIMENTAL |
| --- a/crypto/algboss.c |
| +++ b/crypto/algboss.c |
| @@ -206,6 +206,7 @@ err: |
| return NOTIFY_OK; |
| } |
| |
| +#ifdef CONFIG_CRYPTO_MANAGER_TESTS |
| static int cryptomgr_test(void *data) |
| { |
| struct crypto_test_param *param = data; |
| @@ -266,6 +267,7 @@ err_put_module: |
| err: |
| return NOTIFY_OK; |
| } |
| +#endif /* CONFIG_CRYPTO_MANAGER_TESTS */ |
| |
| static int cryptomgr_notify(struct notifier_block *this, unsigned long msg, |
| void *data) |
| @@ -273,8 +275,10 @@ static int cryptomgr_notify(struct notif |
| switch (msg) { |
| case CRYPTO_MSG_ALG_REQUEST: |
| return cryptomgr_schedule_probe(data); |
| +#ifdef CONFIG_CRYPTO_MANAGER_TESTS |
| case CRYPTO_MSG_ALG_REGISTER: |
| return cryptomgr_schedule_test(data); |
| +#endif |
| } |
| |
| return NOTIFY_DONE; |
| --- a/crypto/testmgr.c |
| +++ b/crypto/testmgr.c |
| @@ -22,6 +22,17 @@ |
| #include <crypto/rng.h> |
| |
| #include "internal.h" |
| + |
| +#ifndef CONFIG_CRYPTO_MANAGER_TESTS |
| + |
| +/* a perfect nop */ |
| +int alg_test(const char *driver, const char *alg, u32 type, u32 mask) |
| +{ |
| + return 0; |
| +} |
| + |
| +#else |
| + |
| #include "testmgr.h" |
| |
| /* |
| @@ -2530,4 +2541,7 @@ notest: |
| non_fips_alg: |
| return -EINVAL; |
| } |
| + |
| +#endif /* CONFIG_CRYPTO_MANAGER_TESTS */ |
| + |
| EXPORT_SYMBOL_GPL(alg_test); |