diff options
Diffstat (limited to 'crypto/testmgr.c')
-rw-r--r-- | crypto/testmgr.c | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/crypto/testmgr.c b/crypto/testmgr.c index f9bea9d989fa..29b228d9b1a2 100644 --- a/crypto/testmgr.c +++ b/crypto/testmgr.c | |||
@@ -2344,6 +2344,7 @@ static int alg_find_test(const char *alg) | |||
2344 | int alg_test(const char *driver, const char *alg, u32 type, u32 mask) | 2344 | int alg_test(const char *driver, const char *alg, u32 type, u32 mask) |
2345 | { | 2345 | { |
2346 | int i; | 2346 | int i; |
2347 | int j; | ||
2347 | int rc; | 2348 | int rc; |
2348 | 2349 | ||
2349 | if ((type & CRYPTO_ALG_TYPE_MASK) == CRYPTO_ALG_TYPE_CIPHER) { | 2350 | if ((type & CRYPTO_ALG_TYPE_MASK) == CRYPTO_ALG_TYPE_CIPHER) { |
@@ -2365,14 +2366,22 @@ int alg_test(const char *driver, const char *alg, u32 type, u32 mask) | |||
2365 | } | 2366 | } |
2366 | 2367 | ||
2367 | i = alg_find_test(alg); | 2368 | i = alg_find_test(alg); |
2368 | if (i < 0) | 2369 | j = alg_find_test(driver); |
2370 | if (i < 0 && j < 0) | ||
2369 | goto notest; | 2371 | goto notest; |
2370 | 2372 | ||
2371 | if (fips_enabled && !alg_test_descs[i].fips_allowed) | 2373 | if (fips_enabled && ((i >= 0 && !alg_test_descs[i].fips_allowed) || |
2374 | (j >= 0 && !alg_test_descs[j].fips_allowed))) | ||
2372 | goto non_fips_alg; | 2375 | goto non_fips_alg; |
2373 | 2376 | ||
2374 | rc = alg_test_descs[i].test(alg_test_descs + i, driver, | 2377 | rc = 0; |
2375 | type, mask); | 2378 | if (i >= 0) |
2379 | rc |= alg_test_descs[i].test(alg_test_descs + i, driver, | ||
2380 | type, mask); | ||
2381 | if (j >= 0) | ||
2382 | rc |= alg_test_descs[j].test(alg_test_descs + j, driver, | ||
2383 | type, mask); | ||
2384 | |||
2376 | test_done: | 2385 | test_done: |
2377 | if (fips_enabled && rc) | 2386 | if (fips_enabled && rc) |
2378 | panic("%s: %s alg self test failed in fips mode!\n", driver, alg); | 2387 | panic("%s: %s alg self test failed in fips mode!\n", driver, alg); |