crypto: testmgr - check that entries in alg_test_descs are in correct order
authorJussi Kivilinna <jussi.kivilinna@iki.fi>
Thu, 13 Jun 2013 14:37:40 +0000 (17:37 +0300)
committerHerbert Xu <herbert@gondor.apana.org.au>
Fri, 21 Jun 2013 06:44:29 +0000 (14:44 +0800)
Patch adds check for alg_test_descs list order, so that accidentically
misplaced entries are found quicker. Duplicate entries are also checked for.

Signed-off-by: Jussi Kivilinna <jussi.kivilinna@iki.fi>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
crypto/testmgr.c

index b2bc533..a81c154 100644 (file)
@@ -3054,6 +3054,35 @@ static const struct alg_test_desc alg_test_descs[] = {
        }
 };
 
+static bool alg_test_descs_checked;
+
+static void alg_test_descs_check_order(void)
+{
+       int i;
+
+       /* only check once */
+       if (alg_test_descs_checked)
+               return;
+
+       alg_test_descs_checked = true;
+
+       for (i = 1; i < ARRAY_SIZE(alg_test_descs); i++) {
+               int diff = strcmp(alg_test_descs[i - 1].alg,
+                                 alg_test_descs[i].alg);
+
+               if (WARN_ON(diff > 0)) {
+                       pr_warn("testmgr: alg_test_descs entries in wrong order: '%s' before '%s'\n",
+                               alg_test_descs[i - 1].alg,
+                               alg_test_descs[i].alg);
+               }
+
+               if (WARN_ON(diff == 0)) {
+                       pr_warn("testmgr: duplicate alg_test_descs entry: '%s'\n",
+                               alg_test_descs[i].alg);
+               }
+       }
+}
+
 static int alg_find_test(const char *alg)
 {
        int start = 0;
@@ -3085,6 +3114,8 @@ int alg_test(const char *driver, const char *alg, u32 type, u32 mask)
        int j;
        int rc;
 
+       alg_test_descs_check_order();
+
        if ((type & CRYPTO_ALG_TYPE_MASK) == CRYPTO_ALG_TYPE_CIPHER) {
                char nalg[CRYPTO_MAX_ALG_NAME];