crypto: testmgr - Fix test disabling option
This patch fixes a serious bug in the test disabling patch where it can cause an spurious load of the cryptomgr module even when it's compiled in. It also negates the test disabling option so that its absence causes tests to be enabled. The Kconfig option is also now behind EMBEDDED. Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
This commit is contained in:
parent
23a75eee07
commit
326a6346ff
3 changed files with 11 additions and 12 deletions
|
@ -101,13 +101,12 @@ config CRYPTO_MANAGER2
|
||||||
select CRYPTO_BLKCIPHER2
|
select CRYPTO_BLKCIPHER2
|
||||||
select CRYPTO_PCOMP2
|
select CRYPTO_PCOMP2
|
||||||
|
|
||||||
config CRYPTO_MANAGER_TESTS
|
config CRYPTO_MANAGER_DISABLE_TESTS
|
||||||
bool "Run algolithms' self-tests"
|
bool "Disable run-time self tests"
|
||||||
default y
|
depends on CRYPTO_MANAGER2 && EMBEDDED
|
||||||
depends on CRYPTO_MANAGER2
|
|
||||||
help
|
help
|
||||||
Run cryptomanager's tests for the new crypto algorithms being
|
Disable run-time self tests that normally take place at
|
||||||
registered.
|
algorithm registration.
|
||||||
|
|
||||||
config CRYPTO_GF128MUL
|
config CRYPTO_GF128MUL
|
||||||
tristate "GF(2^128) multiplication functions (EXPERIMENTAL)"
|
tristate "GF(2^128) multiplication functions (EXPERIMENTAL)"
|
||||||
|
|
|
@ -206,13 +206,16 @@ static int cryptomgr_schedule_probe(struct crypto_larval *larval)
|
||||||
return NOTIFY_OK;
|
return NOTIFY_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef CONFIG_CRYPTO_MANAGER_TESTS
|
|
||||||
static int cryptomgr_test(void *data)
|
static int cryptomgr_test(void *data)
|
||||||
{
|
{
|
||||||
struct crypto_test_param *param = data;
|
struct crypto_test_param *param = data;
|
||||||
u32 type = param->type;
|
u32 type = param->type;
|
||||||
int err = 0;
|
int err = 0;
|
||||||
|
|
||||||
|
#ifdef CONFIG_CRYPTO_MANAGER_DISABLE_TESTS
|
||||||
|
goto skiptest;
|
||||||
|
#endif
|
||||||
|
|
||||||
if (type & CRYPTO_ALG_TESTED)
|
if (type & CRYPTO_ALG_TESTED)
|
||||||
goto skiptest;
|
goto skiptest;
|
||||||
|
|
||||||
|
@ -267,7 +270,6 @@ static int cryptomgr_schedule_test(struct crypto_alg *alg)
|
||||||
err:
|
err:
|
||||||
return NOTIFY_OK;
|
return NOTIFY_OK;
|
||||||
}
|
}
|
||||||
#endif /* CONFIG_CRYPTO_MANAGER_TESTS */
|
|
||||||
|
|
||||||
static int cryptomgr_notify(struct notifier_block *this, unsigned long msg,
|
static int cryptomgr_notify(struct notifier_block *this, unsigned long msg,
|
||||||
void *data)
|
void *data)
|
||||||
|
@ -275,10 +277,8 @@ static int cryptomgr_notify(struct notifier_block *this, unsigned long msg,
|
||||||
switch (msg) {
|
switch (msg) {
|
||||||
case CRYPTO_MSG_ALG_REQUEST:
|
case CRYPTO_MSG_ALG_REQUEST:
|
||||||
return cryptomgr_schedule_probe(data);
|
return cryptomgr_schedule_probe(data);
|
||||||
#ifdef CONFIG_CRYPTO_MANAGER_TESTS
|
|
||||||
case CRYPTO_MSG_ALG_REGISTER:
|
case CRYPTO_MSG_ALG_REGISTER:
|
||||||
return cryptomgr_schedule_test(data);
|
return cryptomgr_schedule_test(data);
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return NOTIFY_DONE;
|
return NOTIFY_DONE;
|
||||||
|
|
|
@ -23,7 +23,7 @@
|
||||||
|
|
||||||
#include "internal.h"
|
#include "internal.h"
|
||||||
|
|
||||||
#ifndef CONFIG_CRYPTO_MANAGER_TESTS
|
#ifdef CONFIG_CRYPTO_MANAGER_DISABLE_TESTS
|
||||||
|
|
||||||
/* a perfect nop */
|
/* a perfect nop */
|
||||||
int alg_test(const char *driver, const char *alg, u32 type, u32 mask)
|
int alg_test(const char *driver, const char *alg, u32 type, u32 mask)
|
||||||
|
@ -2542,6 +2542,6 @@ int alg_test(const char *driver, const char *alg, u32 type, u32 mask)
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif /* CONFIG_CRYPTO_MANAGER_TESTS */
|
#endif /* CONFIG_CRYPTO_MANAGER_DISABLE_TESTS */
|
||||||
|
|
||||||
EXPORT_SYMBOL_GPL(alg_test);
|
EXPORT_SYMBOL_GPL(alg_test);
|
||||||
|
|
Loading…
Reference in a new issue