diff options
Diffstat (limited to 'crypto/testmgr.c')
-rw-r--r-- | crypto/testmgr.c | 58 |
1 files changed, 27 insertions, 31 deletions
diff --git a/crypto/testmgr.c b/crypto/testmgr.c index 037368d34586..f4ed6d4205e7 100644 --- a/crypto/testmgr.c +++ b/crypto/testmgr.c | |||
@@ -181,10 +181,9 @@ static void testmgr_free_buf(char *buf[XBUFSIZE]) | |||
181 | static int wait_async_op(struct tcrypt_result *tr, int ret) | 181 | static int wait_async_op(struct tcrypt_result *tr, int ret) |
182 | { | 182 | { |
183 | if (ret == -EINPROGRESS || ret == -EBUSY) { | 183 | if (ret == -EINPROGRESS || ret == -EBUSY) { |
184 | ret = wait_for_completion_interruptible(&tr->completion); | 184 | wait_for_completion(&tr->completion); |
185 | if (!ret) | ||
186 | ret = tr->err; | ||
187 | reinit_completion(&tr->completion); | 185 | reinit_completion(&tr->completion); |
186 | ret = tr->err; | ||
188 | } | 187 | } |
189 | return ret; | 188 | return ret; |
190 | } | 189 | } |
@@ -353,12 +352,11 @@ static int __test_hash(struct crypto_ahash *tfm, struct hash_testvec *template, | |||
353 | break; | 352 | break; |
354 | case -EINPROGRESS: | 353 | case -EINPROGRESS: |
355 | case -EBUSY: | 354 | case -EBUSY: |
356 | ret = wait_for_completion_interruptible( | 355 | wait_for_completion(&tresult.completion); |
357 | &tresult.completion); | 356 | reinit_completion(&tresult.completion); |
358 | if (!ret && !(ret = tresult.err)) { | 357 | ret = tresult.err; |
359 | reinit_completion(&tresult.completion); | 358 | if (!ret) |
360 | break; | 359 | break; |
361 | } | ||
362 | /* fall through */ | 360 | /* fall through */ |
363 | default: | 361 | default: |
364 | printk(KERN_ERR "alg: hash: digest failed " | 362 | printk(KERN_ERR "alg: hash: digest failed " |
@@ -431,7 +429,7 @@ static int __test_aead(struct crypto_aead *tfm, int enc, | |||
431 | struct scatterlist *sgout; | 429 | struct scatterlist *sgout; |
432 | const char *e, *d; | 430 | const char *e, *d; |
433 | struct tcrypt_result result; | 431 | struct tcrypt_result result; |
434 | unsigned int authsize; | 432 | unsigned int authsize, iv_len; |
435 | void *input; | 433 | void *input; |
436 | void *output; | 434 | void *output; |
437 | void *assoc; | 435 | void *assoc; |
@@ -502,10 +500,11 @@ static int __test_aead(struct crypto_aead *tfm, int enc, | |||
502 | 500 | ||
503 | memcpy(input, template[i].input, template[i].ilen); | 501 | memcpy(input, template[i].input, template[i].ilen); |
504 | memcpy(assoc, template[i].assoc, template[i].alen); | 502 | memcpy(assoc, template[i].assoc, template[i].alen); |
503 | iv_len = crypto_aead_ivsize(tfm); | ||
505 | if (template[i].iv) | 504 | if (template[i].iv) |
506 | memcpy(iv, template[i].iv, MAX_IVLEN); | 505 | memcpy(iv, template[i].iv, iv_len); |
507 | else | 506 | else |
508 | memset(iv, 0, MAX_IVLEN); | 507 | memset(iv, 0, iv_len); |
509 | 508 | ||
510 | crypto_aead_clear_flags(tfm, ~0); | 509 | crypto_aead_clear_flags(tfm, ~0); |
511 | if (template[i].wk) | 510 | if (template[i].wk) |
@@ -569,12 +568,11 @@ static int __test_aead(struct crypto_aead *tfm, int enc, | |||
569 | break; | 568 | break; |
570 | case -EINPROGRESS: | 569 | case -EINPROGRESS: |
571 | case -EBUSY: | 570 | case -EBUSY: |
572 | ret = wait_for_completion_interruptible( | 571 | wait_for_completion(&result.completion); |
573 | &result.completion); | 572 | reinit_completion(&result.completion); |
574 | if (!ret && !(ret = result.err)) { | 573 | ret = result.err; |
575 | reinit_completion(&result.completion); | 574 | if (!ret) |
576 | break; | 575 | break; |
577 | } | ||
578 | case -EBADMSG: | 576 | case -EBADMSG: |
579 | if (template[i].novrfy) | 577 | if (template[i].novrfy) |
580 | /* verification failure was expected */ | 578 | /* verification failure was expected */ |
@@ -720,12 +718,11 @@ static int __test_aead(struct crypto_aead *tfm, int enc, | |||
720 | break; | 718 | break; |
721 | case -EINPROGRESS: | 719 | case -EINPROGRESS: |
722 | case -EBUSY: | 720 | case -EBUSY: |
723 | ret = wait_for_completion_interruptible( | 721 | wait_for_completion(&result.completion); |
724 | &result.completion); | 722 | reinit_completion(&result.completion); |
725 | if (!ret && !(ret = result.err)) { | 723 | ret = result.err; |
726 | reinit_completion(&result.completion); | 724 | if (!ret) |
727 | break; | 725 | break; |
728 | } | ||
729 | case -EBADMSG: | 726 | case -EBADMSG: |
730 | if (template[i].novrfy) | 727 | if (template[i].novrfy) |
731 | /* verification failure was expected */ | 728 | /* verification failure was expected */ |
@@ -1002,12 +999,11 @@ static int __test_skcipher(struct crypto_ablkcipher *tfm, int enc, | |||
1002 | break; | 999 | break; |
1003 | case -EINPROGRESS: | 1000 | case -EINPROGRESS: |
1004 | case -EBUSY: | 1001 | case -EBUSY: |
1005 | ret = wait_for_completion_interruptible( | 1002 | wait_for_completion(&result.completion); |
1006 | &result.completion); | 1003 | reinit_completion(&result.completion); |
1007 | if (!ret && !((ret = result.err))) { | 1004 | ret = result.err; |
1008 | reinit_completion(&result.completion); | 1005 | if (!ret) |
1009 | break; | 1006 | break; |
1010 | } | ||
1011 | /* fall through */ | 1007 | /* fall through */ |
1012 | default: | 1008 | default: |
1013 | pr_err("alg: skcipher%s: %s failed on test %d for %s: ret=%d\n", | 1009 | pr_err("alg: skcipher%s: %s failed on test %d for %s: ret=%d\n", |
@@ -1097,12 +1093,11 @@ static int __test_skcipher(struct crypto_ablkcipher *tfm, int enc, | |||
1097 | break; | 1093 | break; |
1098 | case -EINPROGRESS: | 1094 | case -EINPROGRESS: |
1099 | case -EBUSY: | 1095 | case -EBUSY: |
1100 | ret = wait_for_completion_interruptible( | 1096 | wait_for_completion(&result.completion); |
1101 | &result.completion); | 1097 | reinit_completion(&result.completion); |
1102 | if (!ret && !((ret = result.err))) { | 1098 | ret = result.err; |
1103 | reinit_completion(&result.completion); | 1099 | if (!ret) |
1104 | break; | 1100 | break; |
1105 | } | ||
1106 | /* fall through */ | 1101 | /* fall through */ |
1107 | default: | 1102 | default: |
1108 | pr_err("alg: skcipher%s: %s failed on chunk test %d for %s: ret=%d\n", | 1103 | pr_err("alg: skcipher%s: %s failed on chunk test %d for %s: ret=%d\n", |
@@ -3299,6 +3294,7 @@ static const struct alg_test_desc alg_test_descs[] = { | |||
3299 | }, { | 3294 | }, { |
3300 | .alg = "rfc4106(gcm(aes))", | 3295 | .alg = "rfc4106(gcm(aes))", |
3301 | .test = alg_test_aead, | 3296 | .test = alg_test_aead, |
3297 | .fips_allowed = 1, | ||
3302 | .suite = { | 3298 | .suite = { |
3303 | .aead = { | 3299 | .aead = { |
3304 | .enc = { | 3300 | .enc = { |