aboutsummaryrefslogtreecommitdiffstats
path: root/crypto/testmgr.c
diff options
context:
space:
mode:
Diffstat (limited to 'crypto/testmgr.c')
-rw-r--r--crypto/testmgr.c31
1 files changed, 31 insertions, 0 deletions
diff --git a/crypto/testmgr.c b/crypto/testmgr.c
index b2bc5334c170..a81c154e5d85 100644
--- a/crypto/testmgr.c
+++ b/crypto/testmgr.c
@@ -3054,6 +3054,35 @@ static const struct alg_test_desc alg_test_descs[] = {
3054 } 3054 }
3055}; 3055};
3056 3056
3057static bool alg_test_descs_checked;
3058
3059static void alg_test_descs_check_order(void)
3060{
3061 int i;
3062
3063 /* only check once */
3064 if (alg_test_descs_checked)
3065 return;
3066
3067 alg_test_descs_checked = true;
3068
3069 for (i = 1; i < ARRAY_SIZE(alg_test_descs); i++) {
3070 int diff = strcmp(alg_test_descs[i - 1].alg,
3071 alg_test_descs[i].alg);
3072
3073 if (WARN_ON(diff > 0)) {
3074 pr_warn("testmgr: alg_test_descs entries in wrong order: '%s' before '%s'\n",
3075 alg_test_descs[i - 1].alg,
3076 alg_test_descs[i].alg);
3077 }
3078
3079 if (WARN_ON(diff == 0)) {
3080 pr_warn("testmgr: duplicate alg_test_descs entry: '%s'\n",
3081 alg_test_descs[i].alg);
3082 }
3083 }
3084}
3085
3057static int alg_find_test(const char *alg) 3086static int alg_find_test(const char *alg)
3058{ 3087{
3059 int start = 0; 3088 int start = 0;
@@ -3085,6 +3114,8 @@ int alg_test(const char *driver, const char *alg, u32 type, u32 mask)
3085 int j; 3114 int j;
3086 int rc; 3115 int rc;
3087 3116
3117 alg_test_descs_check_order();
3118
3088 if ((type & CRYPTO_ALG_TYPE_MASK) == CRYPTO_ALG_TYPE_CIPHER) { 3119 if ((type & CRYPTO_ALG_TYPE_MASK) == CRYPTO_ALG_TYPE_CIPHER) {
3089 char nalg[CRYPTO_MAX_ALG_NAME]; 3120 char nalg[CRYPTO_MAX_ALG_NAME];
3090 3121