Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 0b767f96 authored by Alexander Shishkin's avatar Alexander Shishkin Committed by Herbert Xu
Browse files

crypto: testmgr - add an option to disable cryptoalgos' self-tests



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: default avatarAlexander Shishkin <virtuoso@slind.org>
Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
parent bc94e596
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -101,6 +101,14 @@ config CRYPTO_MANAGER2
	select CRYPTO_BLKCIPHER2
	select CRYPTO_PCOMP2

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
+4 −0
Original line number Diff line number Diff line
@@ -206,6 +206,7 @@ static int cryptomgr_schedule_probe(struct crypto_larval *larval)
	return NOTIFY_OK;
}

#ifdef CONFIG_CRYPTO_MANAGER_TESTS
static int cryptomgr_test(void *data)
{
	struct crypto_test_param *param = data;
@@ -266,6 +267,7 @@ static int cryptomgr_schedule_test(struct crypto_alg *alg)
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 notifier_block *this, unsigned long msg,
	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;
+14 −0
Original line number Diff line number Diff line
@@ -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 @@ int alg_test(const char *driver, const char *alg, u32 type, u32 mask)
non_fips_alg:
	return -EINVAL;
}

#endif /* CONFIG_CRYPTO_MANAGER_TESTS */

EXPORT_SYMBOL_GPL(alg_test);