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

Commit 326a6346 authored by Herbert Xu's avatar Herbert Xu
Browse files

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: default avatarHerbert Xu <herbert@gondor.apana.org.au>
parent 23a75eee
Loading
Loading
Loading
Loading
+5 −6
Original line number Diff line number Diff line
@@ -101,13 +101,12 @@ config CRYPTO_MANAGER2
	select CRYPTO_BLKCIPHER2
	select CRYPTO_PCOMP2

config CRYPTO_MANAGER_TESTS
	bool "Run algolithms' self-tests"
	default y
	depends on CRYPTO_MANAGER2
config CRYPTO_MANAGER_DISABLE_TESTS
	bool "Disable run-time self tests"
	depends on CRYPTO_MANAGER2 && EMBEDDED
	help
	  Run cryptomanager's tests for the new crypto algorithms being
	  registered.
	  Disable run-time self tests that normally take place at
	  algorithm registration.

config CRYPTO_GF128MUL
	tristate "GF(2^128) multiplication functions (EXPERIMENTAL)"
+4 −4
Original line number Diff line number Diff line
@@ -206,13 +206,16 @@ err:
	return NOTIFY_OK;
}

#ifdef CONFIG_CRYPTO_MANAGER_TESTS
static int cryptomgr_test(void *data)
{
	struct crypto_test_param *param = data;
	u32 type = param->type;
	int err = 0;

#ifdef CONFIG_CRYPTO_MANAGER_DISABLE_TESTS
	goto skiptest;
#endif

	if (type & CRYPTO_ALG_TESTED)
		goto skiptest;

@@ -267,7 +270,6 @@ 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)
@@ -275,10 +277,8 @@ 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;
+2 −2
Original line number Diff line number Diff line
@@ -23,7 +23,7 @@

#include "internal.h"

#ifndef CONFIG_CRYPTO_MANAGER_TESTS
#ifdef CONFIG_CRYPTO_MANAGER_DISABLE_TESTS

/* a perfect nop */
int alg_test(const char *driver, const char *alg, u32 type, u32 mask)
@@ -2542,6 +2542,6 @@ non_fips_alg:
	return -EINVAL;
}

#endif /* CONFIG_CRYPTO_MANAGER_TESTS */
#endif /* CONFIG_CRYPTO_MANAGER_DISABLE_TESTS */

EXPORT_SYMBOL_GPL(alg_test);